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

문제 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인지, 문..

문제 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 문제풀이 unordered_map을 이용하여 형태로 신고당한 ID, 신고당한 횟수인 report_cnt 형태로 신고한 ID, 정지 먹인 횟수인 reporter_cnt를 선언한다. 먼저 erase, unique를 이용하여 중복 신고 내역을 없앤다. (동일한 유저에 대한 신고 횟수는 1회로 처리되므로) for (idx = 0; idx < report.s..

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