ex) 4의 경우 3에서 가능한 모든 경우의 수에 +1을 더하는 경우가 더해짐 1+1+1 +1, 2+1 +1, ... 이런식.. 근데 1, 2, 3을 더할 수 있으니 dp[i-1], dp[i-2], dp[i-3]을 모두 더해주면 모든 경우의 수를 고려하게 되는 것 문제 https://www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 import sys input = sys.stdin.readline T = int(input().strip()) dp = [1, 2, 4] def fill_dp(dp, n): ..
알고리즘
기본 동작은 boarding 함수를 통해 수행하고 배의 현재 위치와 다음으로 태울 (min_time_arrv) 손님의 위치를 고려하여 main flow 수행 문제 https://www.acmicpc.net/problem/2065 2065번: 나룻배 강을 사이에 두고 위치한 두 정박장 사이를 한 대의 나룻배가 오가고 있다. 두 정박장은 강을 기준으로 왼쪽(left), 오른쪽(right)으로 구분한다. 제일 처음에는 나룻배가 왼쪽 정박장에 위치해 있 www.acmicpc.net 코드 import sys input = sys.stdin.readline from collections import deque M, t, N = map(int,input().split()) left = deque() right = d..
"시작점 (0, 0) 도착점 (1, 2)일 때, 2차원 배열 (3X3)에서 시작점으로부터 도착점까지의 최단거리를 찾아라"는 문제를 푸는 과정입니다. 우선 2차원 배열과 queue를 선언합니다. 본인이 설정해 둔 move에 맞게, 값을 더해가며 현재 위치에서 북, 동, 남, 서 순으로 순회하며 다음 갈 위치를 계산합니다. 아래 그림은 현재 위치(시작 위치)에서 북, 동쪽을 탐색하는 과정입니다. 이런식으로 북, 동, 남, 서를 위치마다 한번씩 다 탐색하게 됩니다. (아래 그림) nx,ny가 MAP의 범위를 초과했거나, 이미 방문했던 노드인 경우에는 생략합니다. 위 그림처럼 (0,0)위치에서 다 순회한 이후에는 다시 현재 queue의 맨 앞 원소를 pop하여 (0,1)에서 북, 동, 서, 남 을 순회합니다. ..