코딩테스트
24/12/04 Python
helena1129
2024. 12. 14. 12:07
1. 카펫
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
def solution(brown, yellow):
x = 3
while x >= 3:
y = (brown + 4 - x*2) / 2
if (yellow == x*y - brown) and (x >= y):
return [x, int(y)]
break
x += 1
NOTE: 수학적으로 접근
brown = x*2 + y*2 - 4
y*2 = brown + 4 - x*2
2. N개의 최소공배수
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
def GCD(a, b):
while(b>0):
a, b = b, a%b
return a
def LCM(a,b):
return (a*b) // GCD(a,b)
def solution(arr):
temp = []
for i in range(len(arr)-1):
if i == 0:
temp.append(LCM(arr[i],arr[i+1]))
else:
temp.append(LCM(temp.pop(),arr[i+1]))
return temp[0]
NOTE: 중요!! 최소공배수와 최대공약수의 관계