목록Baekjoon (177)
GitHubSeob

문제 https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제풀이 입력을 받는 vectortower, 답을 저장하기 위한 vectoranswer, 스택을 쌓기 위해 stacks를 선언한다. 스택 s에는 타워의 번호 값을 저장한다. for문을 통해 가장 왼쪽에 있는 타워부터 오른쪽으로 이동하면서 비교를 한다. 만약 현재 스택의 top() 부분의 타워의 높이가 현재 비교하려는 타워 높이보다 높거나 같으면 레이저를 수신할 수 있으므로 answer에 s..

문제 https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제풀이 큰 틀은 DFS이다. stackbracket은 괄호 '('와 해당 위치를 저장하기 위한 용도, setanswer는 중복 제거된 값들을 저장하는 용도, string input은 입력값, vectorremove는 True값이면 괄호를 지운다는 의미, False이면 지우지 않는다는 의미를 나타내는 용도이다. 0번째 인덱스부터 DFS를 시작한다. 스택을 이용..

문제 https://www.acmicpc.net/problem/22942 22942번: 데이터 체커 데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다. www.acmicpc.net 문제풀이 원이 모두 x축 위에 있으므로 모두 y=0이다. vector 를 이용하여 x좌표와 반지름을 입력받을 때 first에는 x-r, second에는 x+r값을 저장한다. (first = 원이 x축에 닿는 점 중 왼쪽 점, second 오른쪽 점) 먼저 왼쪽 점 좌표를 기준으로 오름차순으로 정렬한다. 이중 for문을 이용해 경우의 수를 따진다. - 첫 번째 if문 첫 번째 원의 first값 == 두 번째 원의 first값일 때 두 원이 겹치면 continue 그렇지 않으면 if문 조건에 걸려 NO출력..

문제 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 문제풀이 먼저 입력이 올바르진 못한 괄호 열을 판별하기 위해 for문으로 판별을 한다. 그다음 while문으로 []을 2로 치환, ()을 3으로 치환한다. 그다음 while문으로 피연산자, 피연산자, 연산자 형태로 나열되어있는 idx를 찾고 연산을 한 후 idx에 연산 값을 저장, erase로 idx+1, idx+2를 지운다. 모든 연산이 끝나 더 이상 연산을 할 수 없는 경우는 피연산자 ..

문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 문제풀이 deque 말고 벡터를 이용해서 풀었다. 풍선을 터뜨려서 나온 종이의 값이 양수이면 오른쪽으로, 음수이면 왼쪽으로 이동한다. balloon[].first는 풍선 안에 있는 종이의 값, balloon[].second는 해당 풍선이 몇 번째 인지를 나타낸다. while문에서 풍선의 번호를 출력하고, 종이의 값을 num에 대입하고, balloon[idx]를 erase 한..

문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제풀이 들어온 입력을 스택을 이용해서 pop을 했을 때 순서대로 만들 수 있는지 여부를 출력하는 문제이다. 처음엔 오름차순 순열을 따로 만들어 지저분하게 풀었는데 다른 사람의 코드를 참고하여 다시 풀었다. for (idx = 0; idx < n; ++idx) { while (s.empty() || s.top(..

문제 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제풀이 입력받은 값에서 한자리씩 끊어 확인한다. pipe는 레이저를 만났을 때 잘려서 나눠진 파이프의 개수, answer는 파이프의 총 개수이다. idx가 '(' 이고, idx+1가 ')'이라면 answer에 pipe값을 더한다. 그리고 idx에 1을 더해 레이저 다음 부터 다시 확인하도록 한다. idx가 '(' 이고 idx+1가 '('이라면 pipe 개수를 하나 늘린다. idx가 ')' 이면 파이프..

문제 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 문제풀이 입력을 다 받고 나서 A~Z까지 입력받은 문자를 해당하는 값으로 먼저 치환을 한다. vector을 선언하고 문자는 해당하는 숫자 형태로, 연산자는 연산자 그대로 입력한다. 그다음 idx는 숫자, idx+1는 숫자, idx+2는 연산자인 경우를 for문을 돌려 값을 찾은 후, 해당 연산자로 연산을 한 후 결과를 idx번째에 집어넣고 idx+1, idx+2의 위치한 값들을 e..

문제 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 문제풀이 pair형태를 가진 큐를 선언(first는 해당 문서가 몇 번째인지, second는 해당 문서의 우선순위를 나타낸다). 벡터 priority로 문서들의 우선순위 값을 내림차순으로 나타낸다. 각각의 값들을 입력받고 sort를 해서 벡터를 내림차순으로 정렬한다. while문을 통해 문서 M을 출력할 때까지 반복을 한다. 큐의 front 값이 우선순위가 제일 높은지, 높다면 문서 M인지, 문..