썸네일 백준 9506번 약수들의 합 문제 https://www.acmicpc.net/problem/9506 문제 해석 입력 한 줄에 하나씩 정수가 입력되고 -1이 입력되면 프로그램을 종료한다. 출력 입력받은 수가 '완전수'라면 "{n} = {n의 약수} + {n의 약수} ... {n의 약수}"를 출력한다. '완전수'가 아니라면 "{n} is NOT perfect." 를 출력한다. 완전수란 자기 자신을 제외한 모든 약수의 합과 자기 자신이 같은 수를 말한다. 풀이 1번 풀이 n이 i로 나누어 떨어지는지 확인하고 나누어 떨어진다면 약수 배열에 추가한다. 1부터 n-1 까지 반복한다. 약수 배열의 합과 n이 같다면 완전수로 출력한다. 아니라면 완전수가 아님을 출력한다. -1이 입력될 때까지 반복한다. while Tr..
썸네일 백준 27433번 팩토리얼 2 - Python 문제 https://www.acmicpc.net/problem/27433 문제 해석 입력 정수 N이 출력된다. 출력 N!을 출력한다. 풀이 1번 풀이 재귀함수로 풀어보겠다. 함수 &#39;Factorial&#39; 는 인수로 정수 하나를 받고, 그 정수의 팩토리얼을 반환한다. &#39;Factorial&#39;은 전달된 정수가 2보다 작으면 1을 리턴하고 아님 정수 * Factorial(정수 - 1)을 반환한다. def Factorial(Num): if Num < 2: return 1 else: return Num * Factorial(Num-1) print(Factorial(int(input())))
썸네일 백준 28215번 대피소 - Python 문제 https://www.acmicpc.net/problem/28215 문제 해석 입력 첫 번째 줄에 집의 수 N, 대피소의 수 K가 입력된다. 그 뒤 집들의 좌표가 N줄에 걸쳐 입력된다. 출력 입력 받은 집의 좌표 중에서 K개의 대피소를 선정한다. 선정할 수 있는 모든 경우의 수 중에서 대피소에서 집 까지의 거리 중 가장 긴 값이 가장 작을 때의 최장거리를 출력한다. 여기서 대피소 까지의 거리란 (대피소의 X좌표) - (집의 X좌표) 의 절대값과 (대피소의 Y좌표) - (집의 Y좌표) 의 절대값을 합한 값을 의미한다. 풀이 1번 풀이 브루트포스 알고리즘을 이용한다. 집들 중에서 대피소를 선정하는 과정은 &#39;조합&#39;을 활용한다. but. 대피소의 수가 정해져있지 않으므로 직접 구현하기보다는 ..
썸네일 백준 28214번 크림빵 - Python 문제 https://www.acmicpc.net/problem/28214 문제 해석 입력 정수 N, K, P와 빵의 정보가 입력된다. N은 빵 묶음의 수, K는 빵 한 묶음 당 빵의 개수, P는 크림이 없는 빵의 최대치이다. 빵의 정보는 이진수 배열로 입력되며 1은 크림이 있는 빵, 0은 크림이 없는 빵을 나타낸다. 출력 크림이 없는 빵인 P개 미만인 묶음의 수를 출력한다. 풀이 1번 풀이 첫 번째 반복문에는 빵 묶음의 개수, 두 번째 반복문에서는 한 묶음 당 빵의 개수 동안 2중 반복문을 돈다. 안쪽 반복문을 도는 동안 0의 개수를 카운트하고, 저장한 뒤, 카운트 한 변수를 초기화 한다. 바깥쪽 반복문이 끝난 뒤, 판매 가능한 빵의 개수를 출력한다. N, K, P = map(int, input().sp..
썸네일 백준 2745 진법 변환 (Python) 문제 https://www.acmicpc.net/problem/2745 풀이 1번 풀이 Alphabet = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] N, B = input().split() N = N[::-1] #앞자리부터 계산하기 위한 슬라이싱 B = int(B) Num = 0 #10진수 변환값 for i in range(len(N)): Num += Alphabet.index(N[i]) * (B ** i) #알파벳 리스트에서..
썸네일 백준 2563 색종이 (Python) 문제 https://www.acmicpc.net/problem/2563 풀이 Paper = [[0 for _ in range(101)] for _ in range(101)] I = int(input()) Color_Paper = [list(map(int, input().split())) for _ in range(I)] for i in Color_Paper: for a in range(i[0], i[0] + 10): for b in range(i[1], i[1] + 10): Paper[a][b] = 1 print(sum([Paper[i].count(1) for i in range(101)])) 100X100 사이즈의 도화지 2차원 배열을 만들고, 색종이들의 위치를 기반으로 색종이가 있는 부분을 1로 바꾸..