목록Problem Solving (54)
이것저것
문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. 초기에 편집기에 입력되어 있는 문자열이 주어지고, 그 이후 입력한 명령어가 차례로 주어졌을 때, 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 구하는 프로그램을 작성하시오. 단, 명령어가..
www.acmicpc.net/problem/2346 문제 N개의 풍선이 있다. 각 풍선 안에는 -N부터 N까지의 수가 적혀있는 종이가 들어 있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다. 우선, 제일 처음에는 1번 풍선을 터뜨린다. 다음에는 풍선 안에 있는 종이를 꺼내어 그 종이에 적혀있는 값만큼 이동하여 다음 풍선을 터뜨린다. 양수가 적혀 있을 경우에는 오른쪽으로, 음수가 적혀 있을 때는 왼쪽으로 이동한다. 풍선은 원형으로 놓여 있다고 생각한다. 즉, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있는 것이다. 이동할 때에는 이미 터진 풍선은 빼고 생각한다. 예를 들어 다섯 개의 풍선 안에 차례로 3, 2, 1, -3, -1이 적혀 있었다고 하자. 이 경우 3이 적혀 있는..
www.acmicpc.net/problem/1158 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 예제 입력 ..
www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 사용할 자료구조 문제에서 "양방향 순환큐" 라고 언급을 하여 양방향으로 삽입/삭제가 모두 가능한 Deque를 사용하였습니다. 문제에서의 3가지 연산 1번 연산 : 가장 앞에 있는 원소를 뽑아내는 연산 dq.pop_front(); 2번 연산 : 가장 앞에 있는 원소를 뽑아내 가장 뒤로 보내는 연산 dq.push_back(dq.front()); dq.pop(); 3번 연산 : 가장 뒤에 있는 원소를 뽑아내 가장..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cNG5yi/btqS4LvpmjW/gOjwDuM63k3HMPc406p8ak/img.png)
www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 경우의 수는 크게 네 가지로 나누어주고 stack을 사용해서 구현하였다. 1. 피연산자가 입력된 경우 2. 여는 괄호 '(' 가 입력된 경우 3. 닫는 괄호 ')' 가 입력된 경우 4. 연산자가 입력된 경우 각각의 경우에 대해 어떤 일이 벌어져야하는지 생각해보았다. 1. 피연산자가 입력된 경우 피연산자가 입력되었을 경우에는 우선 출력한다. (후위표기식이기 때문에 연산자는 피연산자 이후에 나오기 때문) ..
www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 1. 시작점과 끝점은 중요하지 않고, 그 사이의 거리가 중요합니다. 2. 처음 시작은 1 마지막 시작은 1로 끝나야 합니다. 3. 아이디어가 딱히 떠오르지않아서 막무가내로 다 그려보고 적어보니깐 규칙이 발견되었습니다. 거리 작동횟수 1 1 2 2 3 3 4 3 5 4 6 4 7 5 8 5 9 5 10 6 11 6 12 6 13 7 14 7 15 7 이 규칙에 맞게 코..