목록Baekjoon/Silver (86)
GitHubSeob

문제 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://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/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제풀이 값을 string으로 바꾸어 맨앞부터 시작하여 6이 연속으로 3번 있는지 확인을 한다. 있다면 cnt+=1을 하여 개수를 더한다. 없다면 string형인 값을 int형으로 바꾸고 +1을 한 뒤 다시 string형으로 변환한다. 개수가 N이 되었다면 값을 출력한다. 코드 #include #include using namespace std; int main() { ios::sync_w..

문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제풀이 큐 두 개를 선언한다. 하나는 요세푸스 큐, 다른 하나는 답을 내는 용인 answer 큐를 만든다. 먼저 큐에 모든 사람을 집어넣는다. while문을 이용해서 answer에 모든 사람을 집어넣을 때까지 반복을 한다. 현재 사람이 몇 번째인지 세기 위한 count변수를 하나 선언하고, 1부터 시작하여 K가 될 때까지 증가시킨다. 증가시키면서 요세푸스 큐의 첫 번째 값을 다시 요세푸스 큐에 push 하고 pop을 한다. 그렇게 되면 첫 번째 값을 꺼내 다시 큐 끝에 붙여 넣는 ..