BOJ 15894번: 수학은 체육과목 입니다
핵심 포인트 기초 구현력 제출코드 print(int(input()) * 4) 해설 패턴을 보시면 윗면, 아랫면, 오른쪽면, 왼쪽면의 길이가 가장 아래의 정사각형 개수에 4를 곱하는 것과 같은 것을 알 수 있습니다. 입력받은 숫자에 4를 곱해서 출력하면 됩니다. 참고자료 및 그림출처 백준 코딩 문제
핵심 포인트 기초 구현력 제출코드 print(int(input()) * 4) 해설 패턴을 보시면 윗면, 아랫면, 오른쪽면, 왼쪽면의 길이가 가장 아래의 정사각형 개수에 4를 곱하는 것과 같은 것을 알 수 있습니다. 입력받은 숫자에 4를 곱해서 출력하면 됩니다. 참고자료 및 그림출처 백준 코딩 문제
핵심 포인트 기초 구현력 제출코드 x_, y_ = [], [] for _ in range(3): x, y = map(int, input().split()) x_.append(x); y_.append(y) for i in range(3): if x_.count(x_[i]) == 1: x4 = x_[i] if y_.count(y_[i]) == 1: y4 = y_[i] print(x4, y4) 해설 기본적인 알고리즘은 다음과 같습니다. 먼저, 3개의 좌표값을 입력받습니다. 다음으로 4개의 점이 직사각형을 이루어야하는 네 번째 점을 찾아야합니다. 이를 위해서 입력된 각 좌표값의 개수를 세줍니다. 만약, 입력된 2개의 x 좌표 중 1개만 입력되었다면 네 번째 점의 x 좌표가 됩니다. 이 과정을 y 좌표에도 동일하..
핵심 포인트 기초 기하학 min 함수 제출코드 x, y, w, h = map(int, input().split()) print(min([x, y, w - x, h - y])) 해설 현재 좌표 (x, y)를 중심으로 왼쪽 (x), 아래 (y), 오른쪽 (w - x), 위 (h - y) 중 가장 작은 값을 선택하면 됩니다. 참고자료 및 그림출처 백준 코딩 문제
핵심 포인트 직사각형 넓이의 정의 제출코드 A = int(input()) B = int(input()) print(A * B) 해설 두 정수를 입력받으면 직사각형의 넓이를 구하면 되므로 곱한 결과를 출력하면 되는 아주 쉬운 문제 입니다. 참고자료 및 그림출처 백준 코딩 문제
핵심 포인트 기초 구현력 약수의 정의 제출코드 while True: N = int(input()) if N == -1: break div = [n for n in range(1, N//2+1) if N % n == 0] if sum(div) == N: print("{} = {}".format(N, ' + '.join(map(str, div)))) else: print("{} is NOT perfect.".format(N)) 해설 언제 입력이 끝날 지 모르기 때문에 while 문을 이용해서 -1이 입력되면 반복문을 탈출할 수 있도록 만들어놓습니다. 다음으로 지난 포스팅에서 본 것과 동일한 방법으로 약수를 찾는 데 다른 점은 가장 큰 약수는 주어진 수의 절반이므로 N // 2만큼 순회합니다. 만약 div의 ..
핵심 포인트 기초 구현력 약수의 정의 제출코드 N, K = map(int, input().split()) div = [n for n in range(N, 0, -1) if N % n == 0] if len(div) < K: print(0) else: print(div[::-1][K-1]) 해설 두 자연수 N과 K가 입력되면 제일 먼저 N의 약수가 무엇인지 알아야합니다. 저는 리스트 컴프리헨션에 조건문을 추가하여 N부터 시작해서 1까지 1씩 감소시키면서 N을 나누었을 때 나누어떨어지는 수를 div 리스트에 append 하여 약수들이 들어간 리스트를 만들었습니다. 다음으로 K가 약수의 개수보다 크면 출력할 수 있는 약수가 없기 때문에 0을 출력해줍니다. K가 약수의 개수보다 작은 경우에는 현재 div 리스트..
핵심 포인트 기초 구현력 제출코드 while True: N, M = map(int, input().split()) if N == M == 0: break if N M and N % M == 0: print('multiple') else: print('neither') 해설 여기서 입력이 언제 끝날지 모르기 때문에 무한 반복문을 걸어주어야합니다. 이때, 두 자연수를 입력받았을 때 둘 다 0이라면 그냥 반복문을 종료시킵니다. 다음으로 N M 인 경우에 N을 M으로 나누어 떨어지면 'multiple'라고 출력하면 됩니다. 두 경우 모두 해당하지 않으면 ..
핵심 포인트 기초 구현력 제출코드 N = int(input()) arr = [3] for i in range(1, N): arr.append(arr[-1] + 2**i) print(arr[-1]**2) 해설 문제 설명이 복잡하기는 한데 단순히 N번째에서 점의 개수를 출력하는 문제 입니다. 패턴을 분석하면 다음과 같습니다. 1). N = 1 $\rightarrow$ 점의 개수 $3^{2}$ 2). N = 2 $\rightarrow$ 점의 개수 $5^{2}$ 3). N = 3 $\rightarrow$ 점의 개수 $9^{2}$ 4). N = 4 $\rightarrow$ 점의 개수 $17^{2}$ 따라서, 반복문을 N번 반복하면서 N번째에 해당하는 밑 숫자를 얻은 뒤 제곱하면 됩니다. 참고자료 및 그림출처 백준..