개발/코테
[4일차] 프로그래머스 - 피자 나눠 먹기(2), 피자 나눠 먹기(3), 제곱수 판별하기, 짝수 홀수 개수
su-mmer
2023. 10. 27. 14:12
728x90
피자 나눠 먹기(2)
풀이
import math
def solution(n):
return n/math.gcd(6, n)
6과 n의 최소공배수를 6으로 나눈 값이 답이다.
파이썬 3.9부터 최소공배수를 구하는 lcm함수를 지원하는데, 프로그래머스의 버전이 3.8.5이기 때문에 lcm 함수가 지원되지 않는다.
따라서 최소공배수는 6*n/gcd(6,n) 이다.
답은 6*n/gcd(6,n)/6을 구하면 되는데, 약분해서 n/gcd(6,n)을 계산한다.
피자 나눠 먹기(3)
def solution(slice, n):
return n//slice if n%slice==0 else n//slice+1
n/slice의 값이 나누어 떨어지면 n/slice의 몫이 값이 된다.
나누어 떨어지지 않으면 한 판을 더 시키면 되므로 +1을 한다.
제곱수 판별하기
풀이
import math
def solution(n):
return 1 if int(math.sqrt(n)) ** 2 == n else 2
n의 제곱근을 구하고 다시 제곱했을 때 n과 같으면 1, 아니면 2를 출력
int를 해주는 이유는 sqrt(n)**2 했을 때 반올림해버려서 답이 2가 아닌 1이 되는 경우가 있기 때문이다.
다른 풀이
def solution(n):
return 1 if (n ** 0.5).is_integer() else 2
위의 풀이가 계산이 덜 들어가서 더 깔끔하고 효율적이다. 제곱근을 구할 때는 0.5제곱을 활용할 것...
is_integer() 함수로 정수판별 가능
짝수 홀수 개수
풀이
def solution(num_list):
check = [0,0]
for i in num_list:
check[i%2] += 1
return check
처음에 if i%2:
의 결과 값에 따라 check[0]+=1 식으로 작성했는데
check[i%2] 형식으로 작성하는 것이 더 깔끔해서 바꿨다.
728x90