[프로그래머스 입문] - 피자 나눠먹기(1)

hana jeong·2022년 11월 17일
0

오늘 풀어본 문제는 피자나눠먹기(1) 문제이다
특정 메소드를 써서 간단하게 풀 수도 있고 다른 방법으로 풀 수도 있었다

일단 문제는 다음과 같다

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


입출력
(n)(result)
71
11
153

나는 다음과 같이 생각을 했다
1. 피자를 7조각으로 잘라야하니까 일단 n / 7을 한다
사실 여기까지 밖에 생각 못 했다ㅋㅋㅋㅋㅋ....

function solution(n) {
    let answer = Math.floor(n / 7)
    return answer;
}

처음에는 이렇게 작성했다
math.floor를 쓴 이유는 뒤에서 말하겠지만 소수가 나와서 뒤를 없애려고 했던 거였다(그리고 관련 메소드는 이거밖에 몰랐음ㅋㅋㅋ)

그리고 생각을 해봤다
사람의 수(n)이 7일 때 모든 사람이 한 조각 이상 먹기 위해 필요한 피자의 수는 1개이다
그러면 (7 / 7) 을 하면 1라는 결과값이 나온다

하지만 다른 n 값을 대입해보면 다른 결과가 나온다
예를 들면 n이 1이면 1 / 7 = 0.1428571429 라는 값이 나오는데
이러면 기대한 값(1)이 아니다
그래서 math.floor를 썼고 다음과 같이 바꾸었다

function solution(n) {
    let answer = Math.floor(n / 7) + 1 
    return answer;
}

하지만 이러면 사람의 수(n)이 7일 때 2라는 결과값이 나온다
아니 어떻게 하지; 라는 생각이 들었고 이를 팀원들에게 물어보았다
그리고 math메소드들을 내가 아직 제대로 모르는 구나 하는 생각이 들었다
최종적으로 작성한 코드는 다음과 같다

function solution(n) {
    let answer = Math.ceil(n / 7)
    return answer;
}

math.ceil는 올림한 정수를 리턴하는 함수이다
사용법은 여기에 자세하게 쓰겠다

여튼 math.ceil을 사용할 때 n이 1이면 1 / 7 = 0.1428571429 라는 값을 올림해서 기대한 값인 1이 나온다

다른 값도 대입해보자
n = 7 -> 7/7은 1
math.ceil을 써서 올림해도 1이라는 결과값 출력

n = 15 -> 15/7 = 2.142857...
math.ceil을 써서 올림을 하니 결과값 3이 출력된다

아니 내가 너무 어렵게 생각을 한 건가 싶기도 하고
너무 끼워맞추기 식으로 문제를 풀려고 한건가 싶기도 하다
아직 논리적으로 생각하는 건 더 많은 연습이 필요해보인다

profile
https://developer-hh.tistory.com 로 옮깁니다

0개의 댓글