코딩테스트/백준

코딩테스트/백준

[백준] 1309번 - 동물원 (파이썬)

백준 1309번 동물원 문제 파이썬 풀이 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net " 💡 문제 해결 아이디어 " n의 값에 따라 달라지는 결과에서 규칙을 찾아 점화식을 만들어 문제를 해결하였다. 처음 주어지는 그림을 통하여 계산 결과를 유추해볼 수 있다. 규칙 n = 1 , ans = 3 n = 2 , ans = 7 n = 3 , ans = 17 n = 4 , ans = 41 ... 해당 규칙을 보면 이전 값에 따라 다음 값이 결정되는 규칙이 숨어있다. 값들을 살펴보면 n == 3 일 때의 값은 (n == 2일 때의 값) * 2 + (n == 1일 때의 값) 으로 구할 수 있다. 그 이후의 수들도 마찬가지다. 이를 점화식으로 만들면 다..

코딩테스트/백준

[백준] 2579번 - 계단 오르기 (파이썬)

백준 2579번 계단 오르기 파이썬 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 해당 2579번 문제는 300개 이하의 계단이 주어지며 각 계단마다 다른 점수를 흭득할 수 있다. 이러한 상황 가운데서 위와 같은 조건에 맞춰 얻을 수 있는 점수의 최댓값을 흭득하는 문제다. " 💡 문제 해결 아이디어 " 해당 문제는 특정 위치에서의 최댓값을 구하는 문제이므로 조건을 잘 세워야한다. 본인은 이번 문제에서 dp테이블의 값의 기준을 다음과 같이 정의하여 해결하였다. dp[i] : i번째 계단에서 흭득할 수 있는 최댓값 또한 다..

코딩테스트/백준

[백준] 2839번 - 설탕 배달 (파이썬)

" 백준 2839번 설탕 배달 파이썬 풀이 " 2839번 문제는 다음과 같은 조건을 가진 문제이다 " 문제 조건 " 3, 5kg의 설탕봉지로 정확히 NKg의 설탕을 옮기는 가장 최소한의 봉지 수를 구하기 Nkg을 만들 수 없다면 -1 출력 3 4: dp[5] = 1 주어진 무게가 3kg, 5kg이므로 3kg,5kg을 만들 수 있는 경우는 결국 1이다. 그리고 4kg을 만들 수 있는 경우는 절대 없기 때문에 -1로 초기화 해준다. 이 과정은 if문을 통해 주어진 n의 값을 봐가면서 수행해야 Index Error가 나지 않는다. 그보다 큰 값들의 경우엔 반복문을 통해 이후의 dp 테이블 값을 구해주면 되는데 조건을 잡아 값을 초기화 해준다. 조건1. 이전 값(현재 값에서 -3한 값과 -5 한 값)이 만들어질..

코딩테스트/백준

[백준] 9461번 - 파도반 수열 (파이썬)

" 백준 9461번 파도반 수열 문제 파이썬 " 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net " 💡 문제 해결 아이디어 " 이 문제는 주어진 수열 문제와 초기 값을 통하여 P(N) 값을 구해내는 문제이다. 이 문제는 기존 값을 통하여 이후의 값을 유추할 수 있기 때문에 DP문제로 분류할 수 있다. 점화식 찾기 2(p[5]) = 1(p[3]) + 1(p[2]) 3(p[6]) = 2(p[4]) + 1(p[3]) 4(p[7]) = 2(p[5]) + 2(p[4]) ... 9(p[10]) = 5(p[8]) + 4(p[7..

코딩테스트/백준

[백준] 3184번 - 양 (파이썬)

" 백준 3184번 양 문제 파이썬 " 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net " 💡 문제 해결 아이디어 " 이번 문제는 R x C 크기의 범위 내에 있는 울타리 범위 내에서 살아남은 양의 수와 늑대의 수를 구하는 문제이다. bfs를 통해 한 울타리 범위 내에 있는 양과 늑대의 수를 체크하고 문제에 주어진 조건대로 양의 수 > 늑대의 수 : 양이 살아남음 늑대의 수 >= 양의 수 : 늑대가 살아남음 이렇게 체크하여 총 살아남은 양과 늑대의 수를 출력하도록 구현하였다. 코드는 다음과 같다...

코딩테스트/백준

[백준] 2606번 - 바이러스 (파이썬)

" 백준 2606번 바이러스 문제 파이썬 " " 💡 문제 해결 아이디어 " 바이러스 문제는 그래프에서 1에 연결되어 있는 노드를 탐색하여 그 갯수를 출력하는 문제이다. 방문한 노드는 visited 배열에 True로 저장하여 중복 탐색하지 않도록 구현한다. 주어지는 입력값을 이용하여 연결 관계 그래프를 생성하고 1번 노드를 시작으로 연결되어 있는 노드의 갯수를 카운트하면 정답을 도출할 수 있다. 예제 입력 값을 통하여 연결 관계 그래프를 생성하면 다음과 같은 그래프가 생성된다. 주의 사항! 입력받은 값들로 그래프를 그릴 때에 방향이 있는 그래프가 아니므로 node1에 node2을 연결해주었다면, node2에도 node1을 추가해주어야 한다. 만약 node1에 node2을 연결하는 작업만 진행한다면 아래와 ..

코딩테스트/백준

[백준] 2573번 - 빙산 (파이썬) / 시간초과 해결

" 백준 2573번 빙산 문제 파이썬 " " 💡 문제 해결 아이디어 " 이번 문제 해결 아이디어는 코드에 주석으로 달아놓았습니다. 주의 사항 (시간 초과 문제) 이러한 출력 조건이 존재하기 때문에 빙산의 갯수가 0이 된다면 0을 출력하는 코드를 추가해주어야 한다. 그렇지 않으면 시간 초과 오류가 발생하여 문제 풀이에 실패하게 된다. 해당 코드 # 모든 빙산의 갯수가 0이면 0을 출력하도록 year을 0으로 변경하고 반복문을 종료한다. (문제에 존재하는 출력 조건) if tempCnt == 0: year = 0 break # 빙산의 갯수가 0보다 크면 cnt에 빙산의 갯수를 저장 else: cnt = tempCnt 코드 from collections import deque import copy import..

코딩테스트/백준

[백준] 2156 - 포도주 시식 (파이썬)

백준 2156번 포도주 시식 문제 파이썬 " 💡 문제 해결 아이디어 " 연속으로 포도주 잔을 선택하는 문제인데 연속으로 2잔만 마실 수 있고 여러 경우 중 최선의 값을 구한다는 점에서 Dynamic Programming 알고리즘 문제라는 점을 알아낼 수 있었다. 문제 해결 방식 : 보텀업 방식 n : 포도주 잔의 개수 arr : 테이블 별 포도주의 양을 담는 변수 dp[i] : i번째 줄까지에서 마실 수 있는 최대 포도주 양 dp 배열 초기화 dp[0] = arr[0] : 2개 연속으로 마실 수 있는데 1개만 있기 때문에 arr[0] 으로 초기화 dp[1] = arr[0] : 2개 연속으로 마실 수 있는데 2개만 있기 때문에 arr[0] + arr[1] 로 초기화 dp[2] = max(arr[0] + a..

PgmJUN
'코딩테스트/백준' 카테고리의 글 목록