Programming/BOJ(37)
-
백준 BaekJoon Online Judge // 11729
백준 알고리즘 BaekJoon Online Judge 11729번 "하노이 탑 이동 순서" 문제입니다. def hanoi(N, fr, through, to): if N == 1: print(fr, to) else: hanoi(N-1, fr, to, through) print(fr, to) hanoi(N-1, through, fr, to) N = int(input()) print(2**N - 1) hanoi(N, 1, 2, 3) 유명한 하노이의 탑 문제를 재귀 함수로 푸는 문제다. 1번에서 크기가 큰 원판부터 가장 작은 원판까지 쌓여있는 탑을 3번으로 옮기는 문제다. 규칙은 1. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다, 2. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이다..
2021.01.25 -
백준 BaekJoon Online Judge // 10870
백준 알고리즘 BaekJoon Online Judge 10870번 "피보나치 수 5" 문제입니다. def fibb(N): if N == 0: return 0 elif N == 1: return 1 else: return fibb(N-1) + fibb(N-2) n = int(input()) print(fibb(n)) 재귀 함수를 사용하여 피보나치 함수를 구현하는 문제다. 피보나치 수는 처음 두 개의 수는 0과 1로 시작하고 그 후의 수는 직전 2개의 수를 더한 값이다. 즉 0, 1, 1, 2, 3, 5, 8, 13... 으로 나열되는 수열을 피보나치 수열이라고 한다. 재귀 함수를 탈출구가 있어야 한다고 전 재귀 함수 포스트에서 말한바있다. 따라서 이번에도 탙출구인 N이 0 이나 1일 경우를 만들고 3번째 ..
2021.01.25 -
백준 BaekJoon Online Judge // 10872
백준 알고리즘 BaekJoon Online Judge 10872번 "팩토리얼" 문제입니다. def fac(N): if N
2021.01.23 -
백준 BaekJoon Online Judge // 3053
백준 알고리즘 BaekJoon Online Judge 3053번 "택시 기하학" 문제입니다. import math R = float(input()) print("%.6f"%(R*R*math.pi)) print("%.6f"%(R*R*2)) 솔직히 처음에 문제를 읽고 무슨 소리인지 몰랐다. 그냥 규칙을 찾아서 풀은 문제다. 원의 넒이를 구하는 공식은 반지름x반지름xPI(3.141593)이다. 파이썬의 math모듈에서는 PI를 지원하므로 이를 가져왔다. 그리고 다음 줄의 테스크케이스들을 보니 2와 882가 보였다. 882를 2로 나누어 441, 근데 441은 21의 제곱이었다. 그래서 택시 기하학에서의 원의 넓이는 반지름x반지름x2로 풀었더니 테스트케이스에서 나온 내용들과 다 맞았다. 그래서 제출해봤더니 됐다..
2021.01.23 -
백준 BaekJoon Online Judge // 4153
백준 알고리즘 BaekJoon Online Judge 4153번 "직각삼각형" 문제입니다. while True: lst = list(map(int, input().split())) if lst[0] == 0 and lst[1] == 0 and lst[2] == 0: break else: lst.sort() if lst[2]**2 == lst[0]**2 + lst[1]**2: print("right") else: print("wrong") 세 수를 입력받고 그 수들을 변의 길이로 하는 삼각형이 직각삼각형인지 판별하는 문제다. 직각삼각형을 판별하는 가장 대표적인 방법은 피타고라스의 정리를 사용하는 것이다. 피타고라스의 정리란 삼각형의 세 변의 길이 a,b,c(a
2021.01.23 -
백준 BaekJoon Online Judge // 3009
백준 알고리즘 BaekJoon Online Judge 3009번 "네 번째 점" 문제입니다. x_lst = [] y_lst = [] for i in range(3): x, y = map(int, input().split()) if x in x_lst: x_lst.remove(x) else: x_lst.append(x) if y in y_lst: y_lst.remove(y) else: y_lst.append(y) print(x_lst[0], y_lst[0]) 세 점의 좌표가 주어졌을 때 나머지 한 개의 직사각형 꼭짓점 좌표를 구하는 문제다. 구하는 방법은 여러가지가 있겠지만 나는 x, y 좌표들을 입력받았을 때 리스트에 없으면 넣고 있으면 빼는 식으로 하였다. 직사각형은 4개의 꼭짓점으로 이루어져 있고 x..
2021.01.22