Silver/Silver III(3)
-
BOJ 9095 - 1, 2, 3 더하기 (Python3)
백준에는 많은 시리즈 문제들이 존재한다. 아주 다양한 방법으로 별을 찍는 별 찍기 시리즈라거나, 다이나믹 프로그래밍의 진수를 보여주는 돌 게임 시리즈(그 중 두 문제는 이미 다룬 바 있다. 9655번 문제라거나 9659번 문제.), 초보적인 구현 능력을 키우는 골뱅이 찍기 시리즈. 그리고 이 문제로부터 시작되는 다이나믹 프로그래밍의 기초체력을 길러 주는 1, 2, 3 더하기 시리즈가 있다. 이게 다이나믹 프로그래밍의 문제이긴 하지만, 수가 좀 적은가? 재귀 함수의 방법으로 풀어보고자 한다. 원래 하라는 대로 안 하는 게 가장 재미있는 법이다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. ..
2022.11.13 -
BOJ 25945 - 컨테이너 재배치 (Python3)
상당히 최근에 올라온 문제다. 아마 1주일도 안 되었을 것이다. 그래도 이 문제를 푸는 데 필요한 직관이 생각보다는 중요할 것 같아서 글을 쓰게 되었다. 나만 이렇게 생각했나 했는데 다들 이런 방법으로 풀더라. 그럼 본격적으로 풀이에 돌입해 보자. 문제 항구의 컨테이너 하치장 바닥에는 컨테이너를 쌓을 수 있는 칸이 일렬로 총 n개가 그려져 있고, 현재 하치장에는 총 m개의 컨테이너가 쌓여 있다. 개별 컨테이너의 높이는 모두 1로 동일하며, 각 칸에 쌓을 수 있는 컨테이너의 개수에는 제한이 없다. 즉, \(a_i\) (1 ≤ i ≤ n)가 현재 i번째 칸에 쌓여있는 컨테이너의 개수를 나타내면, \(m = \sum_{i=1}^{n}{a_i}\)의 관계가 만족된다. 현재와 같이 높이에 아무 제한이 없이 컨테이..
2022.11.13 -
BOJ 9659 - 돌 게임 5 (Python3)
프로그래밍에는 수학이 중요하다. 이건 Silver I 난이도를 가진 2688번 문제를 코드 네 줄로 풀어보면서 이미 입증한 바가 있다. 그래도, 아무리 강조해도 지나치지 않다. 프로그래밍에는 수학이 중요하다. 이번 글에서 간단한 수학으로 문제를 어떻게 단순화할 수 있는지, 그 사례를 보도록 하겠다. 수학이 아닌 오로지 프로그래밍으로만 푸는 방법은 9655번 문제를 참고하면 되겠다. 그럼 본격적으로 풀이에 돌입해 보자. 문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을..
2022.11.12