[C++] 백준 3078번: 좋은 친구
·
problem solving/백준
문제 https://www.acmicpc.net/problem/3078 풀이 이걸 큐로 풀 수 있다는 걸 알고 상상이 1도 안 되서 검색해서 봤다. (이제 내껄로 만들면 아무튼 성장한거임ㅇㅈㅇㅈ 피타고라스도 학교 다니고 교과서 보고 풀이도 봄;) 너무 똑똑함.. 어떻게 이런 생각을 했지.. 이제 이 지식은 제껍니다. 주의할 점은 output의 타입을 long long으로 지정해야 한다. 소스 #include #include #include int main() { int N = 0, K =0; long long result = 0; std::queue students[21]; std::string name; std::cin >> N >> K; for(int i=0; i> name; while(!studen..
[C++] 백준 5430번: AC
·
problem solving/백준
문제 https://www.acmicpc.net/problem/5430 풀이 input output 1 R 1 [1] [1] 1 D 1 [1] [] 1 DDDD 4 [1,2,3,4] [] 1 R 0 [] [] 위 반례도 잘 돌아가는지 꼭 체크하기! 소스 HTML 삽입 미리보기할 수 없는 소스
[C++] 백준 1935번: 후기 표기식2
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1935 풀이 스택으로 풀었다. calcultor() 안에 a와 b 연산 순서 확인 AA+A-라고 낼수도 있으니까 A 문자열이 어떤 숫자를 대입해야하는지도 저장하고 있어야 한다. 소스 #include #include #include double calculator(double a, double b, char op) { if(op == '+') return a + b; else if(op == '-') return b - a; else if(op == '/') return b / a; else if(op == '*') return a * b; } int main() { int N = 0, result = 0; std::string str; do..
[C++] 백준 1918번: 후위 표기식
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1918 풀이 스택을 이용해 푸는 문제라는걸 알고 있어서 쉽게 풀었다. 각 연산자마다 어떤 행동을 해야 하는지 조건문을 잘 걸어줘야 한다 . 연산자의 우선순위는 아래와 같다. 1. *,/ 2. +,- 3. ), ( 소스 #include #include #include int main() { //input std::string input; std::cin >> input; //solve std::stack op; std::string result; for (int i = 0; i = 'A' && input[i]
[C++] 백준 9012번: 괄호
·
problem solving/백준
문제 https://www.acmicpc.net/problem/9012 풀이 VPS의 조건을 생각해 보았다 . ( 의 개수와 ) 개수가 같아야 한다. 마지막 문자가 반드시 ) 여야 한다. 어떤 경우도 )가 (보다 많을 수 없다. ((()))...는 세번째 문자열까지 ( 는 3개, )는 0개지만 VPS일 가능성이 있다. 하지만 )... 이나 (()))... 가 된다면 뒷 문자열을 볼 필요 없이 VPS가 아니다. 조건을 세운 후 간단한 정수로 (와 )를 적절히 카운팅하여 풀었다. count = 0로 셋팅한다. ( 일 때, count를 1씩 증가시킨다. )일 때, count를 1씩 감소시킨다. count가 0이 아니면 NO를 출력 시킨다. 소스 #include #include #include int main(..
[C++] 백준 10828번: 스택
·
problem solving/백준
문제 https://www.acmicpc.net/problem/10828 풀이 스택 개념 문제 소스 🚩 라이브러리 사용 더보기 #include #include int main() { std::stack v; char word[10]; int T; std::cin >> T; int X = 0; while (true) { std::cin >> word; if (word[3] == 'h') { std::cin >> X; v.push(X); } else if (word[0] == 'p') { if (v.size() != 0) { std::cout
[C++] 백준 1966번: 프린터 큐
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1966 6 0 // N, K 1 1 9 1 1 // values 6개의 숫자 중에 0번째 숫자가 몇번째로 프린트 될까? 주어진 숫자 중에 max는 9이다. 9를 만나면 프린트를 하게 된다. 1 1 9 1 1 1 // 1은 두번째로 큰 숫자이기 때문에 뒤로 보낸다. 1 9 1 1 1 1 9 1 1 1 1 1 // 9는 가장 큰 숫자이기 때문에 출력된다. 출력 횟수 = 1 1 1 1 1 1 // 이제 가장 큰 숫자는 1이기 때문에 출력된다. 출력 횟수 = 2 1 1 1 1 // 출력 횟수 = 3 1 1 1 // 출력 횟수 = 4 1 1 // 출력 횟수 = 5 풀이 중요도 순서대로 pop 해야하기 때문에 중요도를 정렬 시켜야 한다. 이건 라이브러..
원형 큐(Circular Queue) in C++
·
problem solving/개념 정리
출처: https://www.programiz.com/dsa/circular-queue 아래 그림을 보면 0, 1에 공간이 남았지만 REAR가 컨테이너의 끝에 닿았기 때문에 더 이상 공간이 없다고 판단한다. 아니면 원소들을 다시 items[0]부터 시작하도록 옮기는데 비용이 든다. 형 큐는 원래 알던 일반 Queue를 아래 그림처럼 생각하면 된다. 일반 큐에서 삽입, 삭제를 반복하면서 사용할 수 없는 메모리가 생기는 단점을 보완한 자료 구조다. 원형 큐 동작 원형 큐는 FRONT와 REAR라는 두 가지 포인트를 가진다. FRONT는 큐의 첫번째 원소를 가리킨다. REAR는 큐의 마지막 원소를 가리킨다. FRONT와 REAR는 초기값을 -1로 설정해준다. 1. 원소 삽입 큐가 사이즈를 초과하는지 확인한다...
[c++]백준 2164번: 카드2 (원형 큐 구현 & 군수열)
·
problem solving/백준
문제 https://www.acmicpc.net/problem/2164 풀이 🚩원형 큐 앞에 카드를 빼고 뒤로 넣는다? -> 선입선출 -> queue 문제구나. 라이브러리를 사용하면 쉽게 풀 수 있고, 클래스로 직접 구현해서 풀어도 된다. 나는 겸사겸사 queue 라이브러리를 꼼꼼히 볼겸 간단하게 직접 구현해서 풀었다. Queue 라이브러리의 내부 코드가 궁금하면 아래 사이트를 참조하면 된다. https://en.cppreference.com/w/cpp/container/queue 🚩군수열 서치 하다가 군수열로 규칙찾는 방법도 있더라.. 근데 난 못 알아들음 (〃⌒▽⌒〃)ゝ https://hoho325.tistory.com/138 소스 #include #define MAX_SIZE 500001 class..
[C++] 백준 16500번: 문자열 판별
·
problem solving/백준
🔗 문제 16500번: 문자열 판별 16500번: 문자열 판별 첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 www.acmicpc.net 🖍 풀이 만든 예시 softcorn 3 softc corn soft S의 문자열 하나하나 A목록과 대조 시키며 풀면 된다. idx 0 1 2 3 4 5 6 7 S s o f t c o r n A[0] s o f t A[1] c o r n A[2] s o f t c s[0]의 s로 시작하는 단어가 있는지 A를 뒤지고 s[1]의 o로 시작하는 단어가 있는지 A를 뒤지고 … 이걸 s.size()만큼 반복한다. 이..