외거노비
외거노비 일지
외거노비

공지사항

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (35)
    • 스파르타 프로젝트 (1)
      • 소개페이지(feat. 팀 외거노비) (1)
      • 프로젝트(미정)(feat. 팀 외래교란종) (0)
    • 스파르타 개발일지 (34)
hELLO · Designed By 정상우.
외거노비

외거노비 일지

개발일지 20221117 프로그래머스 JavaScript
스파르타 개발일지

개발일지 20221117 프로그래머스 JavaScript

2022. 11. 17. 23:36

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
    '스파르타 개발일지' 카테고리의 다른 글
    • 개발일지 20221119~20 두 번째 프로젝트 시작
    • 개발일지 20221118 JavaScript 함수 선언 방식
    • 개발일지 20221116 JavaScript 기초문법 4 - 배열
    • 개발일지 20221114 기초문법 2 - 함수

    티스토리툴바