Lv.0 피자 나눠 먹기 (3)
문제 설명)
프로그래머스머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항)
2 ≤ slice ≤ 10
1 ≤ n ≤ 100
solution.js)
function solution(slice, n) {
return Math.ceil(n / slice)
}
*
나는 이제 막 코딩공부를 시작한 햇병아리고, 될 수 있다면 조건문과 반복문으로 문제를 해결하기 위해 공부하고 있다.
배열 요소의 순서를 뒤집을 때 reverse와 같은 함수를 사용하면 쉽게 뒤집을 수 있지만, 어차피 내가 개발자로 취업할 때 코딩테스트를 보게 되면 그때는 시간단축을 도와주는 함수들을 쓰기 싫어도 쓸 수밖에 없을 것이다. 앞서 말했다시피 나는 이제 막 코딩에 손을 댔을 뿐이라, 그때까지는 내가 배운 것들을 최대한 다양한 곳에 써 보고 싶었다.
그리고 오늘 이 문제를 가져온 이유는 어제 하루종일 이 문제로 고민했기 때문이다...ㅋㅋㅋ
난 이 문제를 처음 봤을 때 반복문을 사용할 수 있다는 사실이 곧바로 떠오르지는 않았다. 보자마자 소수점 밑으로 올림을 해 버리거나, 또는
function solution(slice, n) {
if(n%slice==0) {
return n/slice
} else {
return parseInt(n/slice) + 1
}
}
이런 코드가 생각이 났다.
그런데 팀원 한 명이 이 문제를 반복문으로 풀 수 있다고 해서 다른 유저들이 푼 정답을 찾아봤는데, 놀랍게도 정말 반복문을 이용해 문제를 푼 사람이 있는 것이다...ㅎㅠㅠㅠㅠ
그리고 아래가 팀원이 가져온 반복문을 사용한 정답 중 하나인데, 이 풀이가 TIL에 이 문제를 쓰게 된 이유다.

제한사항
2 ≤ slice ≤ 10
1 ≤ n ≤ 100
진짜 여기서 한참을 고민함. 1 ≤ n ≤ 100인데 왜 i가 0부터 시작하는지에서부터 막혀서 코드를 이해할 수 없었다ㅠ
그리고 휴가 중인 개발자 친구를 닦달해 내가 고민한 것들을 전달했고, 친구는 내 생각이 맞긴 한데, 이 문제에선 정답인 코드이지만 로직이 잘못 짜진 것 같다고 대답했다.
그러니까 그 내용을 정리하면,
만약 i가 1부터 시작한다면, 1 % slice는 0이 아니기 때문에 카운트할 수가 없어서 그대로 피자는 0판이다. 사람 수가 1이면 피자가 최소 1판이 필요한데, 이 코드대로라면 0판이 필요하다. 그런데 0 % slice은 0이기 때문에 카운트할 수 있다. 그렇기 때문에 for문의 i는 0부터 시작되는 것이다.
그런데 저 for문대로라면 i가 0, 그러니까 사람이 0명일때 0 % slice도 0이라 카운트할 수 있고, 그러면 사람이 0명이어도 1판이 카운트가 된다.
이 문제에는 1 ≤ n ≤ 100라는 특수성이 존재하기 때문에 성립할 수 있는 코드라는 의미다.
나는 변수의 범위가 지정되어 있는 문제를 이런 제한사항이 없다는 가정하에 코드짜는 연습을 겸하고 있었기 때문에 이번 고민이 무의미하다고 생각하지는 않는다.
이런 비슷한 유형의 상황이 닥쳤을 때 이제는 당황하지 않고 해결할 수 있을 것 같다ㅎㅎ...
'스파르타 개발일지' 카테고리의 다른 글
| 개발일지 20221119~20 두 번째 프로젝트 시작 (1) | 2022.11.20 |
|---|---|
| 개발일지 20221118 JavaScript 함수 선언 방식 (0) | 2022.11.18 |
| 개발일지 20221116 JavaScript 기초문법 4 - 배열 (0) | 2022.11.16 |
| 개발일지 20221114 기초문법 2 - 함수 (0) | 2022.11.14 |
| 개발일지 20221113~14 깃헙 사용법 정리 (0) | 2022.11.14 |