목록Baekjoon (177)
GitHubSeob

문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제풀이 deque를 이용해 풀었다. - push_front는 dq.push_front() - push_back은 dq.push_back() - pop_front는 비어있지 않다면 dq.front() 값을 출력하고 dq.pop_front()를, 비어있다면 -1을 출력한다. - pop_back는 비어있지 않다면 dq.back() 값을 출력하고 dq.pop_back()를, 비어있..

문제 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제풀이 큐를 이용하여 풀었다. 먼저, 큐에 1부터 N까지의 수를 입력한다. pop을 하여 가장 위에 있는 카드를 버린다. 그다음 가장 위에 있는 카드를 push 하여 큐에 넣고, pop을 한다. 코드 #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); queuecard; ..

문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제풀이 스택을 이용하여 풀었다. 스택 bracket을 선언한다. 입력받은 string만큼 반복하면서 스택이 비어있지 않고, 마지막에 들어온 괄호가 '('이고, 이번 괄호 값이 ')'이라면 스택을 pop한다. 이 이외의 경우는 스택 bracket에 push만 하면 된다. '(' 다음 ')'이 오는 경우라면 스택에 있는 '('이 없어지고 push를 하지 않기 때문..

문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제풀이 STL stack을 이용해 풀었다. - push는 s.push() - pop은 스택이 비어있으면 -1을, 비어있지 않으면 s.top()을 출력한 후 s.pop()을 한다. - size는 s.size()를 출력 - empty()는 s.empty()를 출력 - top은 스택이 비어있으면 -1을, 비어있지 않으면 s.top()을 출력한다. 코드 #include #incl..

문제 https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제풀이 STL 큐를 이용하여 풀었다. - push는 q.push(), - pop은 큐가 비어있지 않을 때 q.front() 값을 출력하고 pop을 하였고 비어있으면 -1을 출력한다. - size는 q.size() - empty는 q.empty()의 값을 바로 출력한다. - front는 비어있지 않을 때, q.front()의 값을, 비어있으면 -1을 출력한다. - b..

문제 https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 숫자를 string형으로 받고 BFS로 풀었다. 모든 경우를 탐색하면서 가장 큰 수를 갱신했다. 그러나 같은 숫자를 또 판별하게 되면 메모리 초과가 발생한다. 방문은 set을 이용하여 방문 처리를 하였다. 숫자를 바꿨을 때 맨 앞자리가 0이 아니고, 처음 본 숫자일 때만 큐에 넣도록 했다. cnt +1 == K (숫자를 한번 바꿨을 때), K - (cnt +1) % 2 == 0 일 때 (숫자를 한번 바꾼 후, 숫자를 두 번 바꾸면 같은 숫자가 되므로),..

문제 https://www.acmicpc.net/problem/16397 16397번: 탈출 첫 번째 줄에 N (0 ≤ N ≤ 99,999), T (1 ≤ T ≤ 99,999), G (0 ≤ G ≤ 99,999)가 공백 하나를 사이에 두고 주어진다. 각각 N은 LED로 표현된 수, T는 버튼을 누를 수 있는 최대 횟수, G는 탈출을 위해 똑같이 www.acmicpc.net 문제풀이 크게 어렵지는 않은 문제이다. while(!q.empty())문에서 T 횟수를 넘기면 break를 해서 "ANG"을 출력하려고 했는데 45%쯤에서 실패가 떠서 반례가 있나 찾으러 다녔는데 반례는 없었고 break문을 거는 조건에서 실수를 해서 헤맸다. 같은 숫자는 확인 안 하도록 visit벡터를 이용한다. 숫자를 입력받고 숫자..

문제 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 문제풀이 5427번 불과 유사한 문제이다. 물이 먼저 차오른 뒤 고슴도치가 움직인다. 고슴도치의 위치를 나타내는 loc큐, 물의 위치를 나타내는 water큐를 선언한다. 각 큐는 벡터로 구성되고 y좌표, x좌표, 몇 분이 지났는지를 나타낸다. pre와 cnt, w_pre, w_cnt는 1분이 지났을 때 더 이상 while문이 돌지 않도록 하기 위해 분을 나타내는 변수이다. while(1) 문을 실행하고 ..

문제 https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net 문제풀이 불이 먼저 번지고 상근이가 움직이는 문제이다. 테스트 케이스가 있기 때문에 테스트 케이스를 돌리기 전에 초기화하는 함수를 따로 만든다. 불이 번지는 함수와 상근이가 움직이는 함수도 따로 만든다. BFS로 문제를 풀었고 입력을 받을 때 시작 위치는 loc큐에, 불의 위치는 fire큐에 y, x좌표값을 입력한다. void Init(int w, int h) 건물의 상태를 map이라는 2차원 벡터, l..