유하은(프로그래머스)
문제)
조건에 맞게 수열 변환하기 1
문제 설명
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
1 ≤ arr의 길이 ≤ 1,000,000
1 ≤ arr의 원소의 값 ≤ 100
입출력 예
arr result
[1, 2, 3, 100, 99, 98] [2, 2, 6, 50, 99, 49]
JavaScript
복사
풀이)
function solution(arr) {
let answer = [];
for (let i = 0; i<arr.length; i++){
if(arr[i]>=50 && arr[i] % 2===0){
answer.push(arr[i]/2)
} else if (arr[i]<50 && arr[i] % 2!==0){
answer.push(arr[i]*2)
} else {
answer.push(arr[i])
}
}
return answer;
}
분명 더 깔끔하게 가능할 것 같은데 저의 한계입니다.. 선배님들 알려주시면 연마하도록 노력하겠습니다 사랑합니다.
<삼항연산자 러버 예지님... 코멘트>
function solution(arr) {
let answer = [];
for (let i = 0; i<arr.length; i++){
(arr[i]>=50 && arr[i] % 2===0) ? answer.push(arr[i]/2) : (arr[i]<50 && arr[i] % 2!==0) ? answer.push(arr[i]*2) : answer.push(arr[i])
}
return answer;
}
<프로그래머스 답변>
function solution(arr) {
return arr.map((v)=> (v>=50 && v%2===0) ? v/2 : (v<50 && v%2!==0) ? v*2 : v)
}
JavaScript
복사
김미정(프로그래머스)
문제 1.
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
문제 2.
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
JavaScript
복사
풀이 1.
function solution(n) {
return Math.ceil(n / 7)
}
// 사람 n명
// 피자 한판에 7조각
// 피자의 수 return
// 반올림(round), 올림(ceil), 내림(floor)
풀이 2.
function solution(numbers) {
numbers.sort((a, b)=> b - a)
const a = numbers[0]
const b = numbers[1]
return a * b
}
// arr.sort((a, b) => a - b)오름차순
// arr.sort((a, b) => b - a)내림차순
< 현태님 코멘트 >
return numbers[0] * numbers[1]
JavaScript
복사
김현태(프로그래머스)
function solution(price, money, count) {
let sum = 0;
for(let i=1; i<=count; i++){
sum += price * i;
}
if (sum > money) return sum - money;
(else) return 0; // 돈이 충분하면 0리턴
}
JavaScript
복사
조원영(프로그래머스)
문제1
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
입출력 예
a b result
[1,2,3,4] [-3,-1,0,2] 3 // (-3) + (-2) + 0 + 8
[-1,0,1] [1,0,-1] -2 // (-1) + 0 + (-1)
문제2
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
입출력 예
x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]
JavaScript
복사
풀이1
function solution(a, b) {
var answer = 0;
let temp = [];
for (let i = 0; i < a.length; i++) {
temp.push(a[i] * b[i]);
}
answer = temp.reduce((acc, a) => acc + a, 0);
return answer;
}
<현태님 코멘트>
function solution(a, b) {
var answer = 0;
for (let i = 0; i < a.length; i++) {
answer += a[i] * b[i];
}
return answer;
}
풀이2
function solution(x, n) {
var answer = [];
for (let i = 0; i < n; i++) {
answer.push(x + x * i);
}
return answer;
}
JavaScript
복사
손수민(프로그래머스)
문제 1
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
문제 2
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
JavaScript
복사
문제 1 풀이
let solution = (numbers) => numbers.reduce((a,c)=>(a+c),0) / numbers.length
문제 2 풀이
let solution = (num_list)=>num_list.reverse()
현태님 코멘트
function solution(num_list){
let answer =[];
for(let i =num_list.length-1; i>=0; i--){
answer.push(num_list[i])
}
return answer
}
JavaScript
복사
이예지(프로그래머스)
문제 1.
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
입출력 예
n result
144 1
976 2
문제 2.
군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
암호화된 문자열 cipher를 주고받습니다.
그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
입출력 예
cipher code result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk" 2 "fallback"
JavaScript
복사
풀이 1.
function solution(n) {
return Number.isInteger(n**(1/2)) ? 1 : 2;
}
풀이 2-1.
function solution(cipher, code) {
var answer = '';
for(let i = code-1; i < cipher.length ; i+=code){
answer += cipher[i];
}
return answer;
}
풀이 2-2.
function solution(cipher, code) {
var answer = '';
[...cipher].forEach((item, index)=>{
if((index+1) % code === 0)
answer+=item
})
return answer;
}
JavaScript
복사