목록코팅테스트/백준 문제 모음 (296)
For Programmer

코드 def hanoi(num, from1, to, other): # 원반갯수,출발지 기둥번호,목적지 기둥번호,나머지 기둥번호 if num == 0: return hanoi(num - 1, from1, other, to) # 1번째 -> 받아온 원반 갯수보다 하나적은 원반들을 목적지가 아닌 곳으로 이동 move.append([from1, to]) # 2번째 -> 마지막 원반을 목적지로 이동 hanoi(num - 1, other, to, from1) #3번째 -> 다른 곳으로 옮겼던 원반들을 그 위에 얹는다. n = int(input()) move = [] hanoi(n, 1, 3, 2) #하노이탑의 함수를 원반 갯수만큼 실행 print(len(move)) #움직이는 횟수 출력 for i in range(..

코드 def get_stars(n): matrix = [] #별을 담을 리스트 선언 for i in range(len(n) * 3): #인자로 전달된 리스트의 길이 * 3만큼 반복(별의 총 줄 개수가 3배씩 늘어나기 때문 ex)3 -> 9 -> 27 ...) if i // len(n) == 1: #인자로 전달된 리스트의 길이로 나눈 몫이 1일 경우(즉,별모양에서 중간에 빈칸이 들어가는 경우의 범위) matrix.append(n[i % len(n)] + " " * len(n) + n[i % len(n)]) #해당 빈칸의 개수만큼(인자로전달된 리스트의 길이가 빈칸의 개수)별 중간에 추가해준다. else:#그 외 경우 matrix.append(n[i % len(n)] * 3) #리스트에 저장되어있는 별의 개수..

재귀 코드 def pivo(n: int) -> int: if n >= 2: #n이 2이상일 때만 return pivo(n - 2) + pivo(n - 1) #피보나치 수열 실행 else: #n이 1이하일때는 return n #해당값 출력 n = int(input()) print(pivo(n)) ->재귀로 문제를 풀 수도 있지만 재귀는 연산하는데 있어서 수행 시간이 오래걸린다. 따라서 for문으로 처리할 경우 빠르시간 내에 피보나치수열 계산을 처리할 수 있다. for문 코드는 다음과 같다. for문 코드 n = int(input()) pivonacci = [0, 1] # 피보나치수열을 위한 배열선언 및 0,1 값은 미리 초기화 for i in range(2, n + 1): #2부터 n까지 반복문 돌기 nu..

나의 코드 import math t = int(input()) for _ in range(t): x1, y1, r1, x2, y2, r2 = map(int, input().split()) distance = math.sqrt((x1-x2)**2 + (y1-y2)**2) #두 원 사이의 거리계산 array1 =[] #두 점에서 마린과의 거리 및 두점사이의 거리를 담을 리스트 선언 array1.append(r1),array1.append(r2),array1.append(distance) maxNum = max(array1) #3거리중 최대값을 다른 변수에 대입 array1.remove(maxNum) #최대값을 리스트에서 제외하기(두 원이 만나지 않는 경우 계산에 필요하기 때문) if distance == 0..

나의코드 import math r = int(input()) uclid = r * r * math.pi taxi = r * r * 2 #f-string을 이용하여 출력 print(f'{uclid:0.6f}') print(f'{taxi:0.6f}') #round함수 이용하여 출력 print(round(uclid,6)) print(round(taxi,6)) -> 택시기하학과 유클리드 기하학의 원의 넓이를 묻는 문제이다. 파이썬 내장 함수인 math함수의 pi만 잘이용한다면 쉽게 풀 수 있다. 또한 소수점 출력에 관련해서는 다음 블로그에서 포스팅이 잘되어 있으니 참고하면된다.(위의 답에서는 round함수와 f-string 표기법을 이용해서 출력했다.) https://blockdmask.tistory.com/5..

나의 코드 while True: array1 = list(map(int,input().split())) #리스트의 형태로 받는다. if array1.count(0) == 3: #0이 3개이면 반복문 탈출 break array1.sort() #오름차순으로 정리 if array1[2] ** 2 == array1[0] ** 2 + array1[1] ** 2: #피타고라스의 방정식이 성립한다면 print("right") #right출력 else: #그렇지않다면 print("wrong") #wrong출력 -> 여기서 중요한 점은 3숫자중 큰숫자를 모르기 때문에 꼭 sort로 오름차순정리가 필요하다는 점이다. 이점만 유의하면 쉽게 풀수 있는 문제이다.

1. 배열의 count함수를 사용하지 않은 경우(if문 분기) x1, y1 = map(int, input().split()) x2, y2 = map(int, input().split()) x3, y3 = map(int, input().split()) x4, y4 = 0, 0 # x축 if x1 == x2: x4 = x3 elif x2 == x3: x4 = x1 elif x1 == x3: x4 = x2 # y축 if y1 == y2: y4 = y3 elif y2 == y3: y4 = y1 elif y1 == y3: y4 = y2 print(x4, y4) -> 간단하게 설명하면 직사각형은 x좌표 2개가 같고 y좌표 2개가 같다. 그 공식을 이용하여 같은 x좌표가 2개 존재한다면 나머지 남은 하나의 값이 정답..

정답 코드 import math # 에라토스테네스의 체를 이용하여 10000까지 존재하는 소수 구해놓기 m = 10000 #문제에서 제공한 n의 범위 array1 = [True for _ in range(m + 1)] #소수를 판별(True == 소수)을 위한 리스트 선언 array1[0], array1[1] = False, False #0,1은 소수가 아니기에 False로 선언 for i in range(2, int(math.sqrt(m) + 1)): #2부터 m(10000)의 제곱근까지 반복문을 돈다. if array1[i]: #만약 i가 소수라면 j = 2 #i에 곱해줄 j 선언 while i * j 이 문제에서 가장 중요한 점은 입력한 짝수를 절반으로 나누었을 때 나오는 2개의 수가 소수 라는 것..