목록분류 전체보기 (370)
GitHubSeob

문제 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..

문제 https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 문제풀이 간단한 3차원 BFS문제. 값을 입력받을 때 시작 지점의 좌표를 queue에 push 한다. push를 한 좌표부터 시작을 하고, 큐가 빌 때까지 while문을 돌리거나, E라는 탈출구를 찾으면 된다. 큐는 z좌표, y좌표, x좌표, 이동 횟수로 구성한 벡터를 입력받는다. 다음칸이 .이면 이동하고, #칸이면 이동하지 않는다. 다음칸이 E라면 cnt+1의 값을 이용해 Escaped in x..

문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제풀이 단순하게 풀면 메모리랑 시간 초과가 날까 봐 좋은 방법이 있나 생각했는데 떠오르는 게 없어 모든 경우를 탐색하게 했다. N, M을 입력받고 0, 1, 2 값을 입력받으면서 1이면 벡터 home개수를 늘리고 y, x좌표를 넣어준다. 2이면 벡터 chicken개수를 늘리고 y, x좌표를 넣어준다. 모든 입력이 끝났으면 각 치킨집에서 모든 집에 대해 거리가 얼마인지 ..