Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 유노코딩
- 방송대컴퓨터과학과
- 프로그래머스
- Git
- HTML
- aws
- 중간이들
- 방송대
- JavaScript
- 데이터베이스시스템
- Python
- nestjs
- presignedurl
- 파이썬
- MySQL
- 코딩테스트
- 엘리스sw트랙
- Cookie
- redis
- 꿀단집
- 코드잇
- 파이썬프로그래밍기초
- node.js
- 개발자취업
- SQL
- TiL
- CSS
- 코딩테스트준비
- 항해99
- 99클럽
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
[프로그래머스] 입문 Day 4 수학, 배열 (Javascript) 본문
피자 나눠 먹기 (1)
문제 설명
- 머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
7 | 1 |
1 | 1 |
15 | 3 |
풀이 1
Math.trunc와 삼항연산자 사용
function solution(n) {
/* 7로 나눌 때 나누어 떨어지는 경우 : 몫
7로 나눌 때 나누어 떨어지지 않는 경우 : 몫 + 1
*/
var answer = (n % 7 == 0) ? Math.trunc(n / 7) : Math.trunc(n / 7) + 1
return answer;
}
풀이 2
Math.ceil
function solution(n) {
return Math.ceil(n / 7)
}
주의할 점
- 만약 피자 15개를 7조각씩 나누면 2판, 1조각이므로 총 3판이 필요함.
- 입력값 n이 나누어 떨어지면 상관이 없지만, 만약 소수점이 나오면 올림해서 정수를 출력해야됨.
- 풀이 2번처럼 간단하게 풀면 될 것을 복잡하게 풀었음.
피자 나눠 먹기 (2)
문제 설명
- 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
풀이 1
반복문으로 나누어 떨어지는 수를 찾는다
function solution(n) {
var answer = 0;
for (let i = 1; i <= 100; i++) { // 제한사항에 100회 -> n으로 써도 됨
if ((i * 6) % n == 0) {
answer = i
break;
}
}
return answer;
}
풀이 2
while 루프로 같은 논리를 구현함
const solution = (n) => {
// 전체 조각의 수
let piece = 6
// 전체 조각의 수를 나누어 떨어지게 하는 n을 구한다
while(true) {
if (piece % n === 0) {
break
}
piece += 6
}
// 나누어 떨어지게끔 만들어진 piece를 6으로 나누어서 실제 조각의 수 x를 구함
return piece / 6
}
주의할 점
- 어떤 수 n이 주어졌을 때 6x(6의 배수 형태로 나타낼 수 있는 가장 작은 양의 정수 x를 찾는 문제임.
- 흐름대로 풀면 되는 문제였음.
피자 나눠 먹기 (3)
문제 설명
- 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
입출력 예
slice | n | result |
7 | 10 | 2 |
4 | 12 | 3 |
풀이
Math.ceil을 이용
function solution(slice, n) {
var answer = 0;
answer = Math.ceil(n / slice)
return answer;
}
주의할 점
- 위 피자 나눠 먹기 (1) 문제와 아이디어가 같다.
- 다만 파라미터를 2개를 받는다는 것이 다르다.
배열의 평균값
문제 설명
- 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력 예
numbers | result |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5.5 |
[89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] | 94.0 |
풀이 1
for 반복문을 활용해서 문제 그대로 옮겼음.
function solution(numbers) {
var average = 0; // 배열의 평균 (정답)
var sum = 0; // 배열 원소 전체의 합
// 평균 : 원소 전체의 합 / 원소 전체의 개수
for (i = 0; i < numbers.length; i++) {
sum += numbers[i]
answer = (sum / numbers.length)
}
return answer;
}
풀이 2
반복문을 더 간결하게 썼음.
function solution(numbers) {
var answer = 0;
for(i of numbers) {
answer += i
}
return answer / numbers.length;
}
풀이 3
reduce를 활용하여 배열의 합을 계산
function solution(numbers) {
var answer = numbers.reduce((a, b) => (a + b), 0) / numbers.length;
return answer;
}
reduce
· numbers.reduce((a, b) => a + b, 0)
· 배열의 각 요소에 대해 주어진 콜백 함수를 실행하고 누적 값을 계산하는 메소드
· 배열 numbers의 모든 요소를 더하는 표현
- a : 누적합계 (accumulator)
- b : 현재 숫자 (currentValue)
const numbers = [10, 9, 8, 7, 6];
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue;}, 0);
console.log(sum)
accumulator | currentValue |
0 (초기값) | 10 |
0 + 10 | 9 |
(0 + 10) + 9 | 8 |
(0 + 10 + 9) + 8 | 7 |
(0 + 10 + 9 + 8) + 7 | 6 |
최종 : 0 + 10 + 9 + 8 + 7 + 6 = 40
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 입문 Day 6 문자열, 반복문, 출력, 배열, 조건문 (Javascript) (0) | 2023.12.15 |
---|---|
[프로그래머스] 입문 Day 5 수학, 배열 (Javascript) (0) | 2023.12.15 |
[프로그래머스] 입문 Day 3 사칙연산, 배열, 수학 (Javascript) (0) | 2023.12.12 |
[프로그래머스] 입문 Day 2 사칙연산, 조건문, 배열 (Javascript) (0) | 2023.12.12 |
[프로그래머스] 입문 Day 1 사칙연산 (Javascript) (0) | 2023.12.11 |