Algorythm 64

[Python/파이썬] BAEKJOON 백준 2501번: 약수 구하기

https://www.acmicpc.net/problem/2501 문제: 약수 구하기 설명자연수 N이 주어졌을 때, N의 약수들 중에서 K번째로 작은 수를 구하는 문제이다.약수란 어떤 수 p가 q로 나누어떨어질 때(q로 나눈 나머지가 0일 때), q는 p의 약수이다.약수들은 오름차순으로 정렬되어 있다고 본다. 입력첫째 줄에 자연수 N, K가 공백으로 구분되어 주어진다.1 ≤ N ≤ 10,0001 ≤ K ≤ N 출력N의 약수들 중 K번째로 작은 수를 출력한다.만약 약수의 개수가 K보다 작다면 0을 출력한다. 예제 입력 16 3예제 출력 13 예제 입력 225 4예제 출력 20 예제 입력 32735 1예제 출력 31 핵심 아이디어1부터 N까지 나누어 보며 나머지가 0인 수들을 약수로 수집하고, 정렬된 ..

[BAEKJOON/ 백준] 2231번: 분해합

https://www.acmicpc.net/problem/2231 [1] 문제 풀이 n = int(input()) # 분해합을 입력값으로 받음for i in range(1, n+1): # 해당 분해합의 생성자 찾기 num = sum((map(int, str(i)))) # i의 각 자릿수를 더함 num_sum = i + num # 분해합 = 생성자 + 각 자릿수의 합 # i가 작은 수부터 차례로 들어가므로 처음으로 분해합과 입력값이 같을때가 가장 작은 생성자를 가짐 if num_sum == n: print(i) break if i == n: # 생성자 i와 입력값이 같다는 것은 생성자가 없다는 뜻 print(0)  n = int(i..

[BAEKJOON/백준] 2775번: 부녀회장이 될테야

[1] 문제 분석 임의의 층과 호수를 입력받으면, 해당하는 호실에 사는 사람의 수를 출력하는 코드를 작성해야 한다. "0층의 i호에는 i명이 산다." 조건이 주어져있다.이 조건에 따라 리스트에 저장된 값을 이용하여 푸는 방식일 거라고 생각했다. 3층1621562층1410201층136100층1234 각 호실에 사는 사람의 수를 보기 좋게 표로 정리해보았다.  [2] 코드  T = int(input())for _ in range(T): k = int(input()) n = int(input()) people = [i for i in range(1, n+1)] for _ in range(k): for i in range(1, n): people[i] +=..

[BAEKJOON/백준] 9095번: 1, 2, 3 더하기

[1] 풀이  어떤 숫자를 입력해도 원하는 대로의 결괏값이 나오게 하는 어떠한 단일한(?) 공식이 필요한가...에 대한 고민을 했었는데,규칙에 대해 고민해본 결과 이 문제는 "DP"를 이용해서 푸는 문제다! 그러니까, 피보나치 수열처럼 큰 문제를 이미 답을 구한 작은 문제로 나누어서 풀이하는 방식을 사용한다는 것이다. 피보나치 수열은 f(n) = f(n-1) + f(n-2)과 같이 n번째 항이 n-1번째 항과 n-2번째 항을 더한 값인 경우였는데,이 문제에서는 비슷하게 f(n) = f(n-3) + f(n-2) + f(n-1)와 같은 규칙이 적용이 된다. (단, N>3)  확인을 해보겠다.  1. n=4일 때,4를 1, 2, 3으로 더하기 때문에, 1+3, 2+2, 3+1로 나눌 수 있다.1+32+23+1..