개발/코테

[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