문제정보
정수 n이 매개변수로 주어지고
n명이 모두 동일하게 피자조각을 나눠 먹어야합니다.
피자조각은 한판에 6개입니다.
예시
n result
6 1
10 5
4 2
입출력 예 #1
6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.
입출력 예 #2
10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.
입출력 예 #3
4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.
나의풀이
function solution(n) {
let counter = 6
let answer = 1
while(counter % n != 0) {
counter += 6
answer++
}
return answer
}
풀고나니 쉬운 문제였지만 어떻게 해결할지 감을 잘 못잡았던 문제입니다.
그래서 한달 전쯤에 나중에 풀려고 미뤄뒀는데
오늘 풀어보니 풀린 문제에요
n이 1,2,3,6인 경우는 피자 1판만으로도 모두가 나눠먹을 수 있고
피자의 개수는 6개씩 늘어나면서 (6*i)%n이 0일때 피자갯수를 반환하면
while문을 통해 조건이 거짓이 될때까지 반복해주고
while문이 반복된 횟수를 세면 정답을 구할 수 있을거라고 생각했습니다.
다른사람의 풀이
function solution(n) {
return Array(6).fill(n).map((v,idx) => v = v * (idx + 1)).find((v) => v % 6 === 0 ) / 6;
}
Array크기를 6으로 선언하고 Array를 n으로 채워줍니다.
그리고 map()을 이용해 idx에 n에 idx를 곱해준만큼의 요소들로 다시 구성합니다.
생각해보니 피자를 동일하게 나눠먹는다는 가정을 했을 때
가장 최악의 케이스는 모두가 피자한판을 나눠먹는 결과니까
피자한판의 갯수인 6조각을 각각 나눠먹는선에서 모든 수가 정리되니
Array를 6개만 채워 비교해도 모든 경우를 고려할 수 있네요
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 0] 가까운수 Javascript (0) | 2022.11.25 |
---|---|
[Programmers Level 1] 진료 순서 정하기 Javascript (0) | 2022.11.25 |
[Programmers Level 0] 팩토리얼 Javascript (0) | 2022.11.25 |
[Programmers Level 0] 중복된 문자 제거 Javascript (0) | 2022.11.25 |
[Programmers Level 0] 합성수 찾기 Javascript (0) | 2022.11.25 |