코딩테스트 준비(40)
-
[이것이 코딩테스트다] 숨바꼭질 with python
다익스트라 알고리즘을 이용한 풀이 핵심: 1번부터 출발하므로 1번과 연결되어 있는 노드들을 방문하여 최소의 값을 할당해주고 또 연결된 노드들에서 또다른 연결된 노드들과 값을 비교하여 최소의 값을 할당해주는 식으로 bfs와 유사한 형태를 보이는 것을 알 수 있다. import heapq # 입력, 헛간을 loc라는 배열 리스트로 초기화 n,m=map(int,input().split()) loc=[[]*(n+1) for _ in range(n+1)] # 헛간의 양방향 연결을 위하여 각각의 방향에 입력받은 값을 추가시키고, 연결되어 있을 때 1을 핟랑해 준다 for _ in range(m): start,end=map(int,input().split()) loc[start].append((end,1)) loc[..
2021.06.22 -
[이것이 코딩테스트다] 금광 with python
금광: 문제 설명 n × m 크기의 금광이 있다. 금광은 1 × 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있다 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작한다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있다. 이후에 m - 1번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 한다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하라 1. 입력 떄 주어진 입력값은 1차원이지만 이를 2차원으로 받아내야 한다 2, 배열을 순회할 때 행단위로 수행하는 것이 아닌 열 단위로 수행하여 열 단위로 dp를 끝내놓아야 한다 3. 주어진 조건에 맞게 if 구문을 활용하여 오른쪽, 오른쪽 아래, 오른쪽 위를 비교해준..
2021.06.16 -
[백준] 18405번 경쟁적 전염 with python
문제 NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다. 시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다. 또한 증식 과정에서 특정한 칸에 이미 어떠한 바이러스가 존재한다면, 그 곳에는 다른 바이러스가 들어갈 수 없다. 시험관의 크기와 바이러스의 위치 정보가 주어졌을 때, S초가 지난 후에 (X,Y)에 존재하는 바이러스의 종류를 출력하는 프로그램을 작성하시오. 만약 S초가 지난 후에 해당 위치에 바이러스가 존재하지 않는다면, 0을 출력한다. 이 때 X와 Y는 각각 행과..
2021.06.13 -
[백준] 15686번 치킨 배달 with python
문제 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 풀이 1. 주어진 값을 입력..
2021.06.12 -
[백준] 3190 뱀 파이썬
문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는..
2021.06.05