피자 나눠 먹기 (1)

chosey·2022년 10월 24일
0

프로그래머스

목록 보기
2/8
post-thumbnail

문제

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
프로그래머스, 피자 나눠 먹기 (1)

풀이(?)

일단 무조건 7조각으로 잘라준다니 n을 7로 나눈 값을 정수로 바꾼 다음 1을 더해야하는데 처음에 생각난게 Math.round()

const solution = (n) => n % 7 == 0 ? Math.round(n / 7) : Math.round(n/7) + 1;

테스트 1실패 (0.03ms, 33MB) ???????????????
테스트 2통과 (0.02ms, 33.3MB)
테스트 3통과 (0.03ms, 33.3MB)
테스트 4통과 (0.03ms, 33.3MB)
테스트 5통과 (0.02ms, 33.3MB)
테스트 6통과 (0.03ms, 33.3MB)
테스트 7통과 (0.03ms, 33.5MB)
테스트 8통과 (0.03ms, 33.4MB)
테스트 9통과 (0.03ms, 33.3MB)
테스트 10통과 (0.02ms, 33.3MB)
테스트 11통과 (0.02ms, 33.3MB)

?????????????????????????????
왜지? 하고 MDN 레퍼런스를 찾아보니

Math.round() 함수는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환합니다....?
MDN, Math.round()

반올림한 수와 가장 가까운 정수값.. 만약 n.5 이상 값들은 전부 n+1이 되어 반환되니까 false 시 처리되는 부분에서 한번 더 1을 더해버린다. 그래서 오답

그래서 round() 메소드를 floor() 메소드로 바꿔줬는데 바로 정답 처리가 됐다...

제출

const solution = (n) => n % 7 == 0 ? Math.floor(n / 7) : Math.floor(n/7) + 1;

다른 사람 풀이를 봤는데 저게 뭐지

function solution(n) {
    return Math.ceil(n / 7)
}

무심코 지나갔던 메소드를 오늘 또 다시 배웠다.

Math.ceil() 함수는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer 로 반환합니다.
MDN, Math.ceil()

profile
chosey

0개의 댓글