Baekjoon
![[1463] 1로 만들기 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F4YCNi%2FbtrQQcn0Y3w%2FAAAAAAAAAAAAAAAAAAAAAI_uZACwGuh8Szldw9xJ-cw2_2pM9JT0hiOFrjPUTuan%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DFZpU%252FD%252FdpywVVmAXBcpnyYvr1lI%253D)
[1463] 1로 만들기 - Python
/* 문제 */ 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. dp 문제다. 이 문제는 얼핏 쉬워 보이지만 아무 생각 없이 배수로 나눌 경우 최솟값을 제대로 구할 수 없다. 예를 들어 10의 경우, 10 -> 5 -> 4 -> 2 -> 1 로 구하기 쉬운데 (단순 조건문 사용 시) -1을 먼저 해서 10 -> 9 -> 3 -> 1 로 구하는 것이 최솟값이다. 따라서 모든 경우의 수를 구해서 최솟값을 구하는 방법을 생각해 볼 수 있는데, 모든 ..
![[1932] 정수 삼각형 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbHv3DT%2FbtrQOlsUB0F%2FAAAAAAAAAAAAAAAAAAAAAM3UtWvT5koTWAMqxXOF0hI3FtH4xjghMNRSVT59McJX%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3Dd8qeDfnFkRWFi8CAA%252BDjMrSvtQI%253D)
[1932] 정수 삼각형 - Python
/* 문제 */ 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. dp 문제다. 각 칸마다 해당 칸에 도착하는 경로들 중 최댓값을 저장한다. 특정 칸에 도착하는 방법은 최대 두 가지 경우밖에 없다. 위에서 아래로 내려온다고 가정했을 때, 왼쪽 위 (단, 현재 칸이 맨 왼쪽 칸이 아니어야 함) 오른쪽 위 (단, ..
![[2579] 계단 오르기 -Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc78Tlq%2FbtrQeCIVFbe%2FAAAAAAAAAAAAAAAAAAAAAN9EEaZgsfvcV5BeW7h5eU_4HFbd0quwWQGhSZRBUJrr%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DL2%252BM8qXbkBzApiX2uVnn8ul4xgE%253D)
[2579] 계단 오르기 -Python
/* 문제 */ 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 ..
![[1004] 어린 왕자 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcTDBMX%2FbtrrDwkQ0dW%2FAAAAAAAAAAAAAAAAAAAAABTgyNogKzWmqlJ_yXzKTcho2TMixXsSO9xsuGbgqr8h%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3D7Juomv%252F7G4pJ1lFI02UgomWNktA%253D)
[1004] 어린 왕자 - Python
문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행성..
![[9461] 파도반 수열 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FxCrQE%2FbtrrB6tnEbi%2FAAAAAAAAAAAAAAAAAAAAABs-k_jegFwhqcdIC51hOTRoGk2ntz1qSTmUXthhazl0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DIqdlkRm96hIcYDv21T6w7MBGHY4%253D)
[9461] 파도반 수열 - Python
문제 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100) 내 코드 padovan = [] def findP(n): for i in range(n): i..
![[11729] 하노이 탑 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FpfhJL%2FbtrrqmKgV09%2FAAAAAAAAAAAAAAAAAAAAACKICG_DqxDiAWeTsqW3cVuIB-ZH6xcjEZpVSDgBm6-E%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3Dl2HpeavW18ixa6X%252BrKDe9rsGsSk%253D)
[11729] 하노이 탑 - Python
코딩메이트에게 이 문제가 "뉴비들이 제일 처음 대가리 깨지는 문제"라는 무시무시한 이야기를 듣고 바로 도전해 봤다. 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 1. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 2. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 내 코드 result=[] def hanoi(n, a, b, c): if(n == 1): resul..
![[4673] 셀프 넘버 - Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcVpChH%2Fbtrrh43GhVH%2FAAAAAAAAAAAAAAAAAAAAAB6WaycQmrCTekCKNgmtwqIfYRT5LpLeuZ1ccOH4P16g%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DBFWHuE9akCwITdfqIL7jyiBjXhA%253D)
[4673] 셀프 넘버 - Python
문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라..