이예지(프로그래머스)
문제 1.
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예
n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]
문제 2.
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
입출력 예
n t result
2 10 2048
7 15 229,376
문제 3.
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예
numbers direction result
[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]
HTML
복사
문제 1.
function solution(n) {
var answer = [];
for(let i = 0; i <= n; i++){
if(n % i === 0){
answer.push(i);
}
}
return answer;
}
문제 2.
function solution(n, t) {
for(let i = 1; i<= t; i++) n *= 2;
return n;
}
문제 3.
function solution(numbers, direction) {
var answer = [];
if(direction === "right"){
for(let i = 0; i < numbers.length -1; i++){
answer.push(numbers[i]);
}
answer.unshift(numbers[numbers.length-1]);
}else{
for(let i = 1; i < numbers.length; i++) {
answer.push(numbers[i]);
}
answer.push(numbers[0]);
}
return answer;
}
<프로그래머스 답변>
function solution(numbers, direction) {
direction === 'right' ? numbers.unshift(numbers.pop()) : numbers.push(numbers.shift());
return numbers;
}
//pop 배열 뒤에서 값을 제거 push 배열 뒤에서 값을 추가
//shift 배열 앞에서 값을 제거 unshift 배열 앞에서 값을 추가
JavaScript
복사
조원영(프로그래머스)
문제1
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
입출력 예
arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]
문제2
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
입출력 예
n return
121 144
3 -1
JavaScript
복사
풀이1
function solution(arr, divisor) {
var answer = arr.filter((v) => v % divisor == 0).sort((a, b) => a - b);
return answer.length === 0 ? [-1] : answer;
}
풀이2
function solution(n) {
let num = n ** (1 / 2);
if (num === Math.floor(num)) {
return (num + 1) ** 2;
} else {
return -1;
}
// if (Number.isInteger(num)){
// return ((num+1)**2)
// }
// else{
// return -1
// }
}
JavaScript
복사
김미정(프로그래머스)
문제 1.
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
문제 2.
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. 구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
JavaScript
복사
풀이 1.
function solution(money) {
var answer = [];
answer.push(Math.floor(money/5500))
answer.push(money - Math.floor(money / 5500)*5500)
return answer;
}
// money로 사먹을 수 있는 커피 개수 Math.floor(money /5500)
// 남은 돈 => money - (money / 5500)
// 배열에 추가하는 메소드 push
<현태님 커멘트>
function solution(money) {
var answer = [];
let a = Math.floor(money/5500)
answer.push(a)
answer.push(money - a * 5500)
return answer;
}
<예지님 커멘트>
function solution(money) {
return [Math.floor(money / 5500), Math.floor(money % 5500)];
}
function solution(money) {
let a = Math.floor(money/5500)
return [a, money-a * 5500];
}
풀이 2-1.
function solution(price) {
if (price >= 500000){
return price - (price * 0.2)
} else if (price >= 300000){
return price - (price * 0.1)
} else if (price >= 100000){
return price - (price * 0.05)
}
}
// 오답!
function solution(price) {
if (price >= 500000){
return parseInt(price - (price * 0.2))
} else if (price >= 300000){
return parseInt(price - (price * 0.1))
} else if (price >= 100000){
return parseInt(price - (price * 0.05))
} else{
return parseInt(price)
}
}
풀이 2-2.
function solution(price) {
if (price >= 500000) return Math.floor(price - (price * 0.2))
if (price >= 300000) return Math.floor(price - (price * 0.1))
if (price >= 100000) return Math.floor(price - (price * 0.05))
return price
}
console.log(Math.floor(-5.05)); // -6
console.log(parseInt(-5.05)); // -5
// 자꾸 답이 안된다는데 이유를 찾아주세요 여러분 😭
// 만약 500000이상이 들어오면 첫번째부터 걸리기 때문에 큰 숫자부터 역순으로 만들어줘야한다!
// Math.floor 내림(소숫점버림) parseInt 정수로 반환(소숫점 버림)
JavaScript
복사
김현태(프로그래머스)
콜라를 받기 위해 마트에 주어야 하는 병 수 a,
빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b,
상빈이가 가지고 있는 빈 병의 개수 n이 매개변수로 주어집니다.
상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.
JavaScript
복사
function solution(a, b, n) {
let answer = 0;
while(n / a >= 1){
//교환받을 수 있는 콜라
let tmp = parseInt(n / a ) * b;
answer += tmp;
n = n - parseInt(n / a) * a + tmp;
}
return answer;
}
JavaScript
복사
손수민 (프로그래머스)
문제 1
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
문제 2
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
JavaScript
복사
문제 1 풀이
function solution(price) {
if(price>= 500000){
price*=0.8
}else if(price>=300000){
price*=0.9
}else if (price>=100000){
price*=0.95
}
return Math.floor(price)
}
예지님 코멘트 : Math.floor를 사용하지 않으면 오류가 발생하기 때문에( 10 ≤ price ≤ 1,000,000)
Math.floor를 사용해야 합니다 .
문제 2 풀이
function solution(money) {
let num = Math.floor(money /5500)
let change = money%5500
let answer = [num,change];
return answer;
}
JavaScript
복사
유하은(프로그래머스)
문제)
다음에 올 숫자
문제 설명
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
제한사항
2 < common의 길이 < 1,000
-1,000 < common의 원소 < 2,000
common의 원소는 모두 정수입니다.
등차수열 혹은 등비수열이 아닌 경우는 없습니다.
등비수열인 경우 공비는 0이 아닌 정수입니다.
입출력 예
common result
[1, 2, 3, 4] 5
[2, 4, 8] 16
JavaScript
복사
풀이)
function solution(common) {
let obj = common[1] - common[0]
let obj2 = common[2] - common[1]
return (obj === obj2)? common[common.length-1] + obj : common[common.length-1] * (obj2 / obj)
}
//공비
[x, x*?, x * ? * ?]
obj => (x*?) - x = x (? - 1)
obj2 => (x * ? * ?) - x * ? = x*? (? - 1)
obj2 / obj = ?
JavaScript
복사