본문 바로가기

파이썬

(320)
[Python] 9007번 카누 선수 https://www.acmicpc.net/problem/9007 9007번: 카누 선수 이 문제에서는 입력은 표준 입력을 사용한다. 입력의 첫 줄에는 T개의 테스트 케이스가 주어진다. 각 테스트 케이스에는 두 개의 정수 k와 n이 주어지며, k( 1 ≤ k ≤ 40,000,000)는 보트의 특정 값 그 www.acmicpc.net 23/12/27 중간에서 만나기(MITM) 연습 문제로 풀었던 문제이다. 문제 접근 방식: 전체적인 사고 방식은 이전에 풀었던 중간에서 만나기 기본 문제인 7453번 문제와 같다. 이 문제에 대한 해설은 아래와 같다. 2024.01.02 - [알고리즘/백준 문제 풀이] - [Python] 7453번 합이 0인 네 정수 [Python] 7453번 합이 0인 네 정수 https:..
[Python] 11967번 불켜기 https://www.acmicpc.net/problem/11967 11967번: 불켜기 (1, 1)방에 있는 스위치로 (1, 2)방과 (1, 3)방의 불을 켤 수 있다. 그리고 (1, 3)으로 걸어가서 (2, 1)방의 불을 켤 수 있다. (2, 1)방에서는 다시 (2, 2)방의 불을 켤 수 있다. (2, 3)방은 어두워서 갈 수 없으 www.acmicpc.net 23/12/30 BFS 응용 문제로, 생각했던 풀이 방법보다 더 쉬운 방법이 있어서 글을 써본다. 초반 문제 접근 방식: 초반에 접근했던 문제 방식은 BFS를 한 번만 돌도록 하는 방식이었다. 문제를 보면, 특정 방에서 다른 방들의 스위치를 킬 수 있다고 했다. 그리고 스위치가 켜져 있는 방만 출입할 수 있다고 했고, 방에서 방으로 움직일 때에..
[Python] 15573번 채굴 https://www.acmicpc.net/problem/15573 15573번: 채굴 첫째 줄에 N, M, K가 주어진다. (1 ≤ N, M ≤ 1000, 1 ≤ K ≤ N × M) 둘째 줄부터 맨 위의 광물들부터 순서대로 N줄 동안 M개의 광물의 강도 Si, j가 주어진다.(i = 1, 2, ..., www.acmicpc.net 23/12/31 2023년 마지막 날에 해결한 문제로, BFS와 이분 탐색을 섞은 파라메트릭 문제이다. 파라메트릭 서치 연습으로 아주 적절한 문제인 듯 하다. 문제 접근 방식: 문제에서 요구하는 것은 최솟값을 요구하고 있고, 이 값은 특정 값 이상을 넘어가는 최솟값이므로 파라메트릭 서치를 통해 구현할 수 있다. 채굴기의 성능 $D$와 광산의 모습을 입력으로 받아서 BFS를 통..
[Python] 7453번 합이 0인 네 정수 https://www.acmicpc.net/problem/7453 7453번: 합이 0인 네 정수 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. www.acmicpc.net 23/12/25 중간에서 만나기(Meet in the middle) 알고리즘 대표 문제이다. 그룹 연습문제를 풀기 위해서 기본 문제를 풀었다. 알고리즘 이름이 왜 중간에서 만나기인지 모르겠는데, 아직 문제를 덜 풀어서 그런가 그냥 분할 정복처럼 느껴진다. 문제 접근 방식: 1. 나이브한 접근 방식 나이브하게 저 조건을 만족하도록 $a, b, c, d$쌍을 찾기 위해선 $\math..
[Python] 27533번 따로 걸어가기 https://www.acmicpc.net/problem/27533 27533번: 따로 걸어가기 첫째 줄에 정수 $N$과 $M$이 공백을 사이에 두고 주어진다. ($2 \le N, M \le 200\,000$) www.acmicpc.net 23/11/27 LGV Lemma를 알고 있다면 쉽게 해결할 수 있는 문제로, 굳이 LGV Lemma를 알고 있지 않아도 포함 배제의 원리로 풀 수 있는 문제이다. (정확히 말하면, LGV Lemma가 이거의 일반화긴 하다.) 문제 접근 방식: LGV Lemma에 대한 자세한 설명은 아래 글을 참고하자. 2023.12.17 - [수학 공부 기록] - [조합론] 린드스트롬-게셀-비엔노 보조정리(LGV Lemma) [조합론] 린드스트롬-게셀-비엔노 보조정리(LGV Lemm..
[Python] 카탈란 수 문제 모음 2023.12.25 - [알고리즘/백준 문제 풀이] - [Python] 10422번 괄호 [Python] 10422번 괄호 https://www.acmicpc.net/problem/10422 10422번: 괄호 ‘(‘, ‘)’ 문자로만 이루어진 문자열을 괄호 문자열이라 한다. 올바른 괄호 문자열이란 다음과 같이 정의된다. ()는 올바른 괄호 문자열이다. S가 올 lighter.tistory.com 2023.12.25 - [알고리즘/백준 문제 풀이] - [Python] 4811번 알약 [Python] 4811번 알약 https://www.acmicpc.net/problem/4811 4811번: 알약 입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의..
[Python] 4811번 알약 https://www.acmicpc.net/problem/4811 4811번: 알약 입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의 개수 N ≤ 30 가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다. www.acmicpc.net 23/07/05 카탈란 수임을 알면 쉽게 풀 수 있고, 그게 아니더라도 2차원 DP로 쉽게 해결할 수 있다. 문제 접근 방식: 반 조각을 꺼내는 행동은 이전에 한 조각을 꺼내는 행동이 수반되었어야만 나올 수 있다. 따라서 이건 카탈란 수열임을 확인할 수 있다. 한편, 그냥 2차원 DP로도 접근할 수 있다. $DP[i][j]$ = 현재 $i$일이고, 반조각을 꺼낼 수 있는 횟수가 $j$번일 때의 문자열 개수 라고 ..
[Python] 10422번 괄호 https://www.acmicpc.net/problem/10422 10422번: 괄호 ‘(‘, ‘)’ 문자로만 이루어진 문자열을 괄호 문자열이라 한다. 올바른 괄호 문자열이란 다음과 같이 정의된다. ()는 올바른 괄호 문자열이다. S가 올바른 괄호 문자열이라면, (S)도 올바른 괄호 www.acmicpc.net 23/05/07 카탈란 수 기본 문제다. 문제 접근 방식: 조합론에서 카탈란 수는 매우 매우 매우 중요한 수 중 하나이다. 괄호 문제의 경우, 카탈란 수 예시 중 가장 첫 번째로 나오는 예시인 만큼 알아 두어야 할 것이다. 카탈란 수의 점화식을 그대로 구현하면 끝이다. 점화식은 다음과 같다. $$C_n = C_0C_{n-1} + C_1C_{n-2} + \cdots + C_{n-1}C_0$$ 아래..