목록BOJ (5)
Seeeni Tech Diary
1. 문제 https://www.acmicpc.net/problem/20914 20914번: QWERTY 자판 Albert는 QWERTY 키보드를 이용해 (위 그림 참고) 영문 대문자로 ('A'-'Z') 구성된 문자열을 입력하고 싶다. 아직 키보드 만지는 것이 서툰 Albert는 왼쪽 검지만을 이용해 버튼을 누르는 버릇이 있다. www.acmicpc.net 2. 문제 풀이 알고리즘 1) QWERTY 좌표 딕셔너리 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M QWERTY 키보드를 왼쪽으로 정렬하면 위의 표와 같이 되는데, 이 좌표를 그대로 qwerty 딕셔너리에 저장해준다. qwerty = {"Q": [0, 0], "W": [0, 1], ... , "A": ..
1. 문제 https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 2. 문제 풀이 알고리즘 N x M 칸에 치즈가 놓여있는데, 1이 치즈, 0이 공기를 나타낸다. 치즈 한 칸은 상하좌우 중 공기와 닿는 부분이 2칸 이상 있으면 녹게 된다. 치즈가 모두 녹았을 때의 시간을 구해야 하는 문제이다. 빙산이 녹을 때를 구하는 문제와 차이점은 치즈의 내부 공기는 치즈를 녹는 데에 영향을 줄 수 없다는 것이다. 따라서 치즈의 내부 공기와 외부 공기를..
1. 문제 https://www.acmicpc.net/problem/17143 2. 문제 풀이 알고리즘 R x C 칸에 상어가 m마리가 있고 상어는 각각 한 칸을 차지하고, 1초 동안 움직이는 속도 s, 방향 d에 따라서 d방향으로 1초 동안 s칸만큼 이동한다. 벽에 닿을 시에는 방향을 반대방향으로 움직인다. 낚시왕은 1번 열부터 시작하여 C열에 도달할 때까지 한 열에 있는 상어 중 가장 가까운 상어를 잡는다. 열을 한 번 움직일 때마다 1초가 소요된다. 이때 낚시왕이 C열에 도달하여 움직임을 멈출 때까지 잡은 상어의 크기의 합을 구해야한다. 이 문제를 해결하기 위해서는 현재 열에서 가장 가까운 상어를 찾음 → 상어를 잡음 → 남은 상어를 이동 이 세 가지를 모두 구현해야 한다. 3. 구현 1) 입력 받..
1. 문제 https://www.acmicpc.net/problem/2146 N X N 사이즈의 지도를 입력을 받게 되는데, 이 때 바다를 0, 육지를 1로 나타내고 섬은 바다로 둘러쌓인 영역 각각을 의미하게 된다. 이때 섬 두개를 잇는 가장 짧은 다리의 길이를 구해야한다. 다리는 가장 짧게 만들 수 있는 두 섬에 한하여 만들면 된다. 2. 문제 풀이 알고리즘 예제의 입력을 보면 섬들의 육지 영역은 모두 1로만 표시되어 있어서 임의의 육지 영역 하나를 골랐을 때 이 영역이 어떤 섬의 땅인지 구분할 수가 없다. 하지만 서로 다른 두 섬을 연결하는 다리를 만들어야해서 육지 영역을 어떤 섬의 것인지 구분해주어야 한다. 그래서 처음으로 구현할 것은 섬 영역을 나누어주는 것이다. 육지 영역을 1이라는 숫자로 통일..
1. 문제 https://www.acmicpc.net/problem/11729 문제는 하노이 탑을 최소 이동으로 3번째 탑으로 옮겼을 때의 이동 횟수와 그 과정을 출력하는 것이다. 이 문제를 해결하기 위해서는 먼저 하노이 탑의 원반이 어떻게 이동을 해야하는 지부터 알아야 한다. 2. 하노이 탑 이동 알고리즘 하노이 탑이 최소 이동하였을 때를 보면 위 그림과 같은 규칙을 갖고 있다. 원판이 총 5개 일 때를 예시로 들면, 3번째 탑으로 모두 옮기고 싶으면 첫 번째 원판(제일 큰 거)을 3번째로 옮기고 나머지 4개의 원판 기둥은 두 번째 탑으로 옮기게 된다. 두 번째 원판을 세 번째 탑으로 옮기려면 나머지 3개의 원판 기둥을 첫 번째 탑으로 옮기게 된다. 3. 코드 작성 import sys n = int(s..