문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ n ≤ 100
입출력 예
| n | result |
| 6 | 1 |
| 10 | 5 |
| 4 | 2 |
나의 코드
function solution(n) {
for (let i = 1; ; i++) {
if ((i * 6) % n === 0) {
return i;
}
}
}
풀이
1. 피자는 한 판에 6조각
2. 모든 사람이 같은 수의 조각을 먹고, 남는 조각이 없어야 한다.
3. 따라서 전체 조각 수는 사람 수 n으로 나누어떨어져야 한다.
→ 6의 배수(전체 조각 수)를 하나씩 늘려가면서 n으로 나누어떨어지는 순간을 찾기
ex)
n = 10명
1. 30조각이있어야함 (최소) 그래야 3조각씩 먹을 수 있음
2. 30조각 = 5판
1. 6의 배수를 계속 돌림
2. 언제까지? 10명이 나눠떨어질때까지... (나머지가 0일때)
3. 30이라는 값이 나왔어 거기에 나누기 6을 하면 피자의 판이 나옴
case 1. 다른 사람의 코드
const solution = (n) => {
let piece = 6
while(true) {
if (piece % n === 0) {
break
}
piece += 6
}
return piece / 6
}
차이점
나는 판 수를 증가시키고 저 코드는 조각 수를 증가시킴
(별반 차이 없음)
case 2. 다른 사람의 코드
function solution(n) {
let pizza = 1;
while (pizza * 6 % n) {
pizza++;
}
return pizza;
}
차이점
나는 for문 안에서 if문 사용해 조건을 만족하면 return하는 구조
이 코드는 while 문의 조건 자체에 식을 넣어서 조건이 만족될 때까지 반복하도록 구조
느낀점
문제의 핵심 개념을 먼저 파악하는 게 1순위 그리고 그 다음이 어떻게 하면 효율적인 방식으로 풀 수 있는지에 대한 선택지가 좀 전보다 넓어진 거 같다...
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 마지막 두 원소 (0) | 2026.04.17 |
|---|---|
| [프로그래머스] 뒤집힌 문자 (0) | 2026.04.10 |
| [프로그래머스] 피자 나눠 먹기 (1) (0) | 2026.04.05 |
| [프로그래머스] 짝수는 싫어요 (0) | 2026.04.04 |
| [프로그래머스] 최빈값 구하기 (0) | 2026.04.03 |