프로그래밍/Python

프로그래머스_python lv0. 피자 나눠 먹기(1)

O'bin 2023. 1. 9. 18:31

https://school.programmers.co.kr/learn/courses/30/lessons/120814

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

내 답안 : 

 

1
2
3
def solution(n):
    answer = [i for i in range(1,16if (7*i)//>= 1]
    return min(answer)
cs

 

n이 최대값인 100일때 팔요한 피자는 15판이므로,

1판~16판 사이에서 7*판수를 인원으로 나눈 몫이 1보다 크거나 같아야 인당 1조각이 보장되기 때문에,

if 조건이 포함된 for문으로 작성했다.

answer배열에서 가장 작은 값이 필요한 피자 판 수의 최소값이므로 min함수로 정답을 리턴했다.

문제 분류가 배열이기 때문에 배열을 이용하여 풀었는데, 풀면서도 가장 합리적인 풀이는 아닐 것이라고 생각했다.

 

 

 

 

개선안 : 

 

1
2
def solution(n):
    return (n - 1// 7 + 1
cs

 

입력한 인원에서 1을 빼고 7로 나눈 몫에 1을 더한 값을 리턴받는다.

n-1을 했으므로 7로 나눈 몫에 한판이 더 있어야 모든 인원이 최소 한 조각을 보장받는다.

 

 

난 복잡하게 생각했는데, 이렇게 단순화하는 연습을 해야겠다.