개발 이모저모/프로그래머스 알고리즘
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(3)
creativeDeveloper!
2023. 3. 22. 09:43
728x90
■ 피자 나눠 먹기(1)
- 이 문제를 처음 봤을때, 과거 수학 익힘책에서 본 듯한 느낌을 받았다.
- 조건은 모든 사람이 한조각씩 먹어야하고, 한판을 7등분을 한다. => 인원(n) /7을 하면 한사람당 최소 한조각을 먹는다.
- 나눴을때 정수로 떨어져야하고 그래서 Math함수를 써야하는데,floor를 쓸지 ceil를 쓸지 고민하게 된다.
- 하나의 입출력 예를 들어보면, ceil을 사용해야 1.xx일때, 1이 될 수 있다.
■ 피자 나눠 먹기(2)
- 먼저 매개변수로 주어진 사람수 n에대해 두가지 경우로 나눌 수 있다. 사람이 한명일때와 n명일때,
- 한명일때는 무조건 1을 return하고, n명일 경우에 대해 또다시 경우의 수를 나눌 수 있다.
- 우선 피자 한판을 정의하기 위해, 피자 한 조각을 1로 초기화해준다. 그렇게 되면 피자 한조각*6은 한판이 된다.
- 그리고 한사람당 먹을 한조각을 정의해주고, 한사람당 먹을 한조각이 0일 경우에는 피자 수가 계속 증가한다.
- 이제 남은 피자를 정의해야하는데 남은 피자수는 전체피자 - (한사람당 먹는 조각* 인원수) 가 된다.
- '피자를 남기지 않고'라는 정의가 붙었기 때문에 남은 피자가 0과 같을 경우에는 그냥 피자로 반납하면 되고,
- 0이 아닐 경우에는 피자 조각수를 증가시켜서 다시 경우의 수를 구해야한다.
■ 피자 나눠 먹기(3)
- 이 문제는 피자 나눠 먹기 (1) 문제랑 똑같다.
- 위 문제와는 다르게 두가지 조건을 매개변수로 받았다.
- 하지만 본질은 사람수를 조각수로 나눠주면 됨!!
■ 배열의 평균값
- 이 문제는 구하고자 하는것이, 정수 배열의 평균값이기 때문에 배열의 총합을 0으로 초기화 해준다.
- 배열의 길이 만큼 반복문을 돌려주는데,
- 예를 들면 numbers[0], numbers[1], numbers[2],... 이 값들의 핪이 sum 이 되기 때문이다.
- 그래서 sum += numbers[i] 라는 식을 쓸 수 있게 된다.
- 원소의 평균값을 구하는 공식은 합계를 배열의 길이 만큼 나눈값이 된다.
728x90