목록문제/백준_파이썬 (155)
sm 기술 블로그
N = int(input()) min = 1000000 for i in range(N): num = sum = i while (num != 0): sum += num % 10 num //= 10 # 각 자릿수를 더해줌 if sum == N and sum < min: min = i if min == 1000000: print(0) else: print(min) 여기서 핵심은 while (num != 0): sum += num % 10 num //= 10 이것이다. 이 로직이 1의 자리 수만 뽑아낸 다는 것을 알면 크게 어렵지 않을 것이다. ex) 15 num % 10 = 5 num // 10 = 1 num % 10 = 1 num // 10 = 0 만약 생성자가 없다면 처음에 초기화한 min 값이 그대로 들..
N, M = map(int, input().split()) cardNum = list(map(int, input().split())) max = 0 for i in range(0, N-2): for j in range(i+1, N): for k in range(j+1, N): sum = cardNum[i]+cardNum[j]+cardNum[k] if(sum > max and sum 너비 우선 탐색(BFS, breadth first search) brute 무식한 force 힘이다. 완전탐색 알고리즘으로 모든 경우의 수를 모.." data-og-host="smhope.tistory.com" data-og-source-url="https://smhope.tistory.com/196" data-og-url="..
N = int(input()) def Hanoi(A, B, C, N): # A:1 B:2 C:3 if N == 1: print("{0} {1}".format(A, C)) # 처음 print라고 정의함 return Hanoi(A, C, B, N-1) print("{0} {1}".format(A, C)) # 마지막 print 라고 정의함 Hanoi(B, A, C, N-1) print((2**N)-1) Hanoi(1, 2, 3, N) 먼저 이동 순서를 한번 보자. 하노이탑 n = 3 일때 위와 같이 이동한다. 어떻게 이동 되는지 이해가 됐는가? 그럼 설명에 들어간다. 재귀 함수를 사용하여 하노이탑 문제를 풀어야한다. 기본적으로 총 움직이는 횟수는 2의 들어온 값의 제곱 - 1 이다. => (( 2**n )-1..
좀 어려웠다.. 처음에 n = int(input()) result = "" # 1. 함수정의 def star(x, y, n): global result if(x // n) % 3 == 1 and (y // n) % 3 == 1: # x, y를 현재 n값에 나누고 그 값의 3의 나머지가 1일 때 result += " " elif n == 1: # 위 조건에 만족하지 않고 n이 1/3 까지 오면 별 출력 result += "*" else: star(x, y, n//3) # n을 3으로 나누고, 함수 재호출 # 2. 계산 시작 for x in range(n): for y in range(n): star(x, y, n) result += "\n" print(result) 을 이용하였다. 행,열이 3의 나머지가 ..