js/[문제풀이] programmers

[js] 코딩테스트 입문 - 간단한 문제 모음

우금붕 2023. 2. 17. 22:30

따로 해설이 없는 문제들입니다.

각 함수에 대한 설명은 아래 포스팅을 참고해주세요.

2023.01.20 - [취준/[개발공부] javascript] - 프로그래머스 자주 사용되는 함수 모음

 

프로그래머스 자주 사용되는 함수 모음

* set 집합. 중복을 허용하지 않습니다. let ot = [...new Set([...one, ...two])]; 여기서는 Spread Operator(전개연산자) '...'로 Set 객체의 값들을 하나씩 전개, 즉 꺼내서 새로운 배열의 원소로 넣고, ot에 저장하

yoo-hk.tistory.com

 

 

 

# 01. 편지

더보기

[문제 설명]

머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 공백도 하나의 문자로 취급합니다.
  • 1 ≤ message의 길이 ≤ 50
  • 편지지의 여백은 생각하지 않습니다.
  • message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다.

입출력 예

 message                                                                                                                                   result
"happy birthday!" 30
"I love you~" 22

입출력 예 설명

입출력 예 #1

  • message의 글자 수가 15개로 최소 가로 30cm의 편지지가 필요합니다.

입출력 예 #2

  • message의 글자 수가 11개로 최소 가로 22cm의 편지지가 필요합니다.

[문제 풀이]

function solution(message) {
    return message.length*2;
}

 

 

 

# 02. 문자열 계산하기

더보기

[문제 설명]

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.


제한사항

  • 연산자는 +, -만 존재합니다.
  • 문자열의 시작과 끝에는 공백이 없습니다.
  • 0으로 시작하는 숫자는 주어지지 않습니다.
  • 잘못된 수식은 주어지지 않습니다.
  • 5 ≤ my_string의 길이 ≤ 100
  • my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
    • my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
    • 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
    • my_string에는 연산자가 적어도 하나 포함되어 있습니다.
  • return type 은 정수형입니다.
  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.

입출력 예

 my_string                                                                                                                   result
"3 + 4" 7

입출력 예 설명

입출력 예 #1

  • 3 + 4 = 7을 return 합니다.

[문제 풀이]

function solution(my_string) {
    return eval(my_string.split(' ').join(''));
}

 

 

 

# 03. 배열의 유사도

더보기

[문제 설명]

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

입출력 예

 s1                                                         s2                                                                                                       result
["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0

입출력 예 설명

입출력 예 #1

  • "b"와 "c"가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0을 return합니다.

[문제 풀이]

function solution(s1, s2) {
    return s1.filter(x => s2.includes(x)).length;
}

 

 

 

# 04. 숫자 찾기

더보기

[문제 설명]

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

입출력 예

 num                                                                                              k                                    result
29183 1 3
232443 4 4
123456 7 -1

입출력 예 설명

입출력 예 #1

  • 29183에서 1은 3번째에 있습니다.

입출력 예 #2

  • 232443에서 4는 4번째에 처음 등장합니다.

입출력 예 #3

  • 123456에 7은 없으므로 -1을 return 합니다.

[문제 풀이]

function solution(num, k) {
    return String(num).indexOf(k) >= 0 ? String(num).indexOf(k)+1 : -1;
}

 

 

 

# 05. 자릿수 더하기

더보기

[문제 설명]

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요


제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예

 n                                                                                                                        result
1234 10
930211 16

입출력 예 설명

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

[문제 풀이]

function solution(n) {
    return String(n).split('').reduce((acc, cur)=>Number(acc)+Number(cur), 0);
}

 

 

 

# 06. 문자열안에 문자열

더보기

[문제 설명]

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

입출력 예

 str1                                                                                                                            str2                                result
"ab6CDE443fgh22iJKlmn1o" "6CD" 1
"ppprrrogrammers" "pppp" 2
"AbcAbcA" "AAA" 2

입출력 예 설명

입출력 예 #1

  • "ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.

입출력 예 #2

  • "ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.

입출력 예 #3

  • "AbcAbcA" str1에 str2가 없으므로 2를 return합니다.

[문제 풀이]

function solution(str1, str2) {
    return str1.includes(str2) ? 1 : 2;
}

 

 

 

# 07. 제곱수 판별하기

더보기

[문제 설명]

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 1,000,000

입출력 예

 n                                                                                                                 result
144 1
976 2

입출력 예 설명

입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976은 제곱수가 아닙니다. 따라서 2를 return합니다.

[문제 풀이]

function solution(n) {
    return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}

 

 

 

# 08. 세균 증식

더보기

[문제 설명]

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

입출력 예

 n                                  t                                               result
2 10 2048
7 15 229,376

입출력 예 설명

입출력 예 #1

  • 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다.

입출력 예 #2

  • 처음엔 7마리, 1시간 후엔 14마리, 2시간 후엔 28마리, ..., 15시간 후엔 229376마리가 됩니다. 따라서 229,376을 return합니다.

[문제 풀이]

function solution(n, t) {
    return n*(2**t);
}

/* 2진수, 시프트 이용
function solution(n, t) {
  return n << t;
}
*/

 

 

 

# 09. 7의 개수

더보기

[문제 설명]

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 100,000

입출력 예

 array                                                                                                                                     result
[7, 77, 17] 4
[10, 29] 0

입출력 예 설명

입출력 예 #1

  • [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.

입출력 예 #2

  • [10, 29]에는 7이 없으므로 0을 return 합니다.

[문제 풀이]

function solution(array) {
    return array.join('').split('').filter(x => x==7).length;
}

/*
function solution(array) {
    return array.join('').split('7').length-1;
}
*/

 

 

 

# 10. 종이 자르기

더보기

[문제 설명]

머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.

정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < M, N < 100
  • 종이를 겹쳐서 자를 수 없습니다.

입출력 예

 M                                                          N                                                           result
2 2 3
2 5 9
1 1 0

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 가로 2 세로 5인 종이는 가로로 1번 세로로 8번 총 가위질 9번이 필요합니다.

입출력 예 #3

  • 이미 1 * 1 크기이므로 0을 return 합니다.

[문제 풀이]

function solution(M, N) {
    return (M-1) + (N-1)*M;
}

/*
function solution(M, N) {
    return M*N-1;
}
*/

 

 

 

# 11. 다음에 올 숫자

더보기

[문제 설명]

등차수열 혹은 등비수열 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

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.

입출력 예 #2

  • [2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.

[문제 풀이]

function solution(common) {
    const r = common[1]-common[0];
    return r == common[2]-common[1] ? 
        common[common.length-1] + r : (common[1]/common[0]) * common[common.length-1];
}

 

 

 

# 12. 문자열 정렬하기 (2)

더보기

[문제 설명]

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < my_string 길이 < 100

입출력 예

 my_string                                                                             result
"Bcad" "abcd"
"heLLo" "ehllo"
"Python" "hnopty"

입출력 예 설명

입출력 예 #1

  • "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.

입출력 예 #2

  • "heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.

입출력 예 #3

  • "Python"를 모두 소문자로 바꾸면 "python"이고 이를 알파벳 순으로 정렬하면 "hnopty"입니다.

[문제 풀이]

function solution(my_string) {
    return my_string.toLowerCase().split('').sort().join('');
}

 

 

 

 

# 13. 삼각형의 완성조건 (1)

더보기

[문제 설명]

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.


제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

입출력 예

 sides                                                                                                                                             result
[1, 2, 3] 2
[3, 6, 2] 2
[199, 72, 222] 1

입출력 예 설명

입출력 예 #1

  • 가장 큰 변인 3이 나머지 두 변의 합 3과 같으므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.

입출력 예 #2

  • 가장 큰 변인 6이 나머지 두 변의 합 5보다 크므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.

입출력 예 #3

  • 가장 큰 변인 222가 나머지 두 변의 합 271보다 작으므로 삼각형을 완성할 수 있습니다. 따라서 1을 return합니다.

[문제 풀이]

function solution(sides) {
    const newsi = sides.sort((a, b) => a-b);
    return newsi[0]+newsi[1] > newsi[2] ? 1 : 2;
}

 

 

 

# 14. 암호 해독

더보기

[문제 설명]

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

  • 암호화된 문자열 cipher를 주고받습니다.
  • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.

문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ cipher의 길이 ≤ 1,000
  • 1 ≤ code  cipher의 길이
  • cipher는 소문자와 공백으로만 구성되어 있습니다.
  • 공백도 하나의 문자로 취급합니다.

입출력 예

 cipher                                                                                                                code       result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk" 2 "fallback"

입출력 예 설명

입출력 예 #1

  • "dfjardstddetckdaccccdegk" 의 4번째, 8번째, 12번째, 16번째, 20번째, 24번째 글자를 합친 "attack"을 return합니다.

입출력 예 #2

  • "pfqallllabwaoclk" 의 2번째, 4번째, 6번째, 8번째, 10번째, 12번째, 14번째, 16번째 글자를 합친 "fallback"을 return합니다.

[문제 풀이]

function solution(cipher, code) {
    const answer = [];
    for (var i=1; i<cipher.length+1; i++){
        i % code == 0 ? answer.push(cipher[i-1]) : 0;
    }
    return answer.join('');
}

 

 

 

# 15. 369게임

더보기

[문제 설명]

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ order ≤ 1,000,000

입출력 예

 order                                                                                                                        result
3 1
29423 2

입출력 예 설명

입출력 예 #1

  • 3은 3이 1개 있으므로 1을 출력합니다.

입출력 예 #2

  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

[문제 풀이]

function solution(order) {
    return order.toString().split('').filter(x => x=='3' || x=='6' || x=='9').length;
}

/*
정규식 활용
function solution(order) {
    var answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
    return answer;
}
*/

 

 

 

# 16. 배열 원소의 길이

더보기

[문제 설명]

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

입출력 예

 strlist                                                                                                                           result
["We", "are", "the", "world!"] [2, 3, 3, 6]
["I", "Love", "Programmers."] [1, 4, 12]

입출력 예 설명

입출력 예 #1

  • ["We", "are", "the", "world!"]의 각 원소의 길이인 [2, 3, 3, 6]을 return합니다.

입출력 예 #2

  • ["I", "Love", "Programmers."]의 각 원소의 길이인 [1, 4, 12]을 return합니다.

[문제 풀이]

function solution(strlist) {
    return strlist.map(x => x.length);
}

 

 

 

# 17. 숨어있는 숫자의 덧셈(1)

더보기

[문제 설명]

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

입출력 예

 my_string                                                                                                                                     result
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.

유의사항

  • 연속된 숫자도 각각 한 자리 숫자로 취급합니다.

[문제 풀이]

function solution(my_string) {
    return my_string.split('').filter(x => x==Number(x)).reduce((a,b)=>Number(a)+Number(b));
}

 

 

 

# 18. 순서쌍의 개수

더보기

[문제 풀이]

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 1,000,000

입출력 예

 n                                                                                                                 result
20 6
100 9

입출력 예 설명

입출력 예 #1

  • n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.

입출력 예 #2

  • n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.

[문제 풀이]

function solution(n) {
    var answer = 0;
    for (var i=1; i<=n; i++){
        n%i == 0 ? answer += 1 : 0;
    }
    return answer;
}

/* 순서쌍의 개수는 약수의 개수와 같으므로 약수의 개수를 구함 */

 

 

 

# 19. 배열 자르기

더보기

[문제 설명]

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 2 ≤ numbers의 길이 ≤ 30
  • 0 ≤ numbers의 원소 ≤ 1,000
  • 0 ≤num1 < num2 < numbers의 길이

입출력 예

 numbers                                                                       num1             num2            result
[1, 2, 3, 4, 5] 1 3 [2, 3, 4]
[1, 3, 5] 1 2 [3, 5]

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.

입출력 예 #2

  • [1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.

[문제 풀이]

const solution = (numbers, num1, num2) => numbers.slice(num1, num2+1);

 

 

 

# 20. 문자 반복 출력하기

더보기

[문제 설명]

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

입출력 예

 my_string                                     n                     result
"hello" 3 "hhheeellllllooo"

입출력 예 설명

입출력 예 #1

  • "hello"의 각 문자를 세 번씩 반복한 "hhheeellllllooo"를 return 합니다.

[문제 풀이]

function solution(my_string, n) {
    return my_string.split('').map(x => x.repeat(n)).join('');
}

 

 

 

# 21. 문자열 뒤집기

더보기

[문제 설명]

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

 my_string                                                                             return
"jaron" "noraj"
"bread" "daerb"

입출력 예 설명

입출력 예 #1

  • my_string이 "jaron"이므로 거꾸로 뒤집은 "noraj"를 return합니다.

입출력 예 #2

  • my_string이 "bread"이므로 거꾸로 뒤집은 "daerb"를 return합니다.

[문제 풀이]

function solution(my_string) {
    var answer = '';
    for (var i=my_string.length-1; i>=0; i--){
        answer += my_string[i];
    }
    return answer;
    /*
    return my_string.split('').reverse().join('');
    */
}

 

 

 

# 22. 배열 뒤집기

더보기

[문제 설명]

정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ num_list의 길이 ≤ 1,000
  • 0 ≤ num_list의 원소 ≤ 1,000

입출력 예

 num_list                                                                               result
[1, 2, 3, 4, 5] [5, 4, 3, 2, 1]
[1, 1, 1, 1, 1, 2] [2, 1, 1, 1, 1, 1]
[1, 0, 1, 1, 1, 3, 5] [5, 3, 1, 1, 1, 0, 1]

입출력 예 설명

입출력 예 #1

  • num_list가 [1, 2, 3, 4, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 4, 3, 2, 1]을 return합니다.

입출력 예 #2

  • num_list가 [1, 1, 1, 1, 1, 2]이므로 순서를 거꾸로 뒤집은 배열 [2, 1, 1, 1, 1, 1]을 return합니다.

입출력 예 #3

  • num_list가 [1, 0, 1, 1, 1, 3, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 3, 1, 1, 1, 0, 1]을 return합니다.

[문제 풀이]

const solution = (num_list) => num_list.reverse();

[직접 구현]

function solution(num_list) {
    var answer = [];
    for (var i=num_list.length-1; i>=0; i--){
        answer.push(num_list[i]);
    }
    return answer;
}

[다른 사람 풀이]

function solution(num_list) {
    var answer = [];
    var j = num_list.length
    for(var i = 1; i <= j; i++){
        answer.push(num_list[j-i])
    }
    return answer;
}

 

 

 

# 23. 아이스 아메리카노

더보기

[문제 설명]

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < money ≤ 1,000,000

입출력 예

 money                                                                          result
5,500 [1, 0]
15,000 [2, 4000]

입출력 예 설명

입출력 예 #1

  • 5,500원은 아이스 아메리카노 한 잔을 살 수 있고 잔돈은 0원입니다.

입출력 예 #2

  • 15,000원은 아이스 아메리카노 두 잔을 살 수 있고 잔돈은 4,000원입니다.

[문제 풀이]

const solution = (money) => [Math.floor(money/5500), money%5500];

 

 

 

# 24. 배열의 평균값

더보기

[문제 설명]

정수 배열 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

  • numbers의 원소들의 평균 값은 5.5입니다.

입출력 예 #2

  • numbers의 원소들의 평균 값은 94.0입니다.

[문제 풀이]

function solution(numbers) {
    return numbers.reduce((acc, cur) => acc+cur)/numbers.length;
}

 

 

 

# 25. 짝수는 싫어요

더보기

[문제 설명]

정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 100

입출력 예

 n                            result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]

입출력 예 설명

입출력 #1

  • 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.

입출력 #1

  • 15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.

[문제 풀이]

function solution(n) {
    return Array(n).fill(1).map((x,y) => x+y).filter(x => x%2 != 0);
}

[다른 사람 풀이]

function solution(n) {
    var answer = [];

    for (let i = 1; i<=n; i+=2) answer.push(i)

    return answer;
}

 

 

 

# 26. 중앙값 구하기

더보기

[문제 설명]

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000

입출력 예

 array                                                                                                                                               result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.

[문제 풀이]

function solution(array) {
    array = array.sort((a,b) => a-b);
    return array[Math.floor(array.length/2)];
}

 

 

 

# 27. 나머지 구하기

더보기

[문제 설명]

정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

 num1                                                                 num2                                              result
3 2 1
10 5 0

입출력 예 설명

입출력 예 #1

  • num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.

입출력 예 #2

  • num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.

[문제 풀이]

function solution(num1, num2) {
    return num1%num2;
}

 

 

 

# 28. 배열 두 배 만들기

더보기

[문제 설명]

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 1 ≤ numbers의 길이 ≤ 1,000

입출력 예

 numbers                                                                            result
[1, 2, 3, 4, 5] [2, 4, 6, 8, 10]
[1, 2, 100, -99, 1, 2, 3] [2, 4, 200, -198, 2, 4, 6]

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.

입출력 예 #2

  • [1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.

[문제 풀이]

const solution = (numbers) => numbers.map(x=>x*2);

 

 

 

# 29. 숫자 비교하기

더보기

[문제 설명]

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.


제한사항

  • 0 ≤ num1 ≤ 10,000
  • 0 ≤ num2 ≤ 10,000

입출력 예

 num1                                                      num2                                                      result
2 3 -1
11 11 1
7 99 -1

입출력 예 설명

입출력 예 설명 #1

  • num1이 2이고 num2가 3이므로 다릅니다. 따라서 -1을 return합니다.

입출력 예 설명 #2

  • num1이 11이고 num2가 11이므로 같습니다. 따라서 1을 return합니다.

입출력 예 설명 #3

  • num1이 7이고 num2가 99이므로 다릅니다. 따라서 -1을 return합니다.

[문제 풀이]

const solution = (num1, num2) => num1 === num2 ? 1 : -1;

 

 

 

# 30. 두 수의 나눗셈

더보기

[문제 설명]

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.


제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

 num1                                    num2                                               result
3 2 1500
7 3 2333
1 16 62

입출력 예 설명

입출력 예 #1

  • num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.

입출력 예 #2

  • num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다.

입출력 예 #3

  • num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.

[문제 풀이]

const solution = (num1, num2) => Math.floor(num1/num2*1000);

 

 

 

# 31. 몫 구하기

더보기

[문제 설명]

정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

 num1                                                                 num2                                             result
10 5 2
7 2 3

입출력 예 설명

입출력 예 #1

  • num1이 10, num2가 5이므로 10을 5로 나눈 몫 2를 return 합니다.

입출력 예 #2

  • num1이 7, num2가 2이므로 7을 2로 나눈 몫 3을 return 합니다.

[문제 풀이]

const solution = (num1, num2) =>Math.floor(num1/num2);

 

 

 

# 32. 두 수의 곱 (곱, 차, 합 모두 같은 코드이므로 차, 합 생략)

더보기

[문제 설명]

정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 0 ≤ num1 ≤ 100
  • 0 ≤ num2 ≤ 100

입출력 예

 num1                                                num2                                               result
3 4 12
27 19 513

입출력 예 설명

입출력 예 #1

  • num1이 3, num2가 4이므로 3 * 4 = 12를 return합니다.

입출력 예 #2

  • num1이 27, num2가 19이므로 27 * 19 = 513을 return합니다.

[문제 풀이]

const solution = (num1, num2) => num1*num2;

 

 

 

# 33. 머쓱이보다 키 큰 사람

더보기

[문제 설명]

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ height ≤ 200
  • 1 ≤ array의 원소 ≤ 200

입출력 예

 array                                                                                                                       height                         result
[149, 180, 192, 170] 167 3
[180, 120, 140] 190 0

입출력 예 설명

입출력 예 #1

  • 149, 180, 192, 170 중 머쓱이보다 키가 큰 사람은 180, 192, 170으로 세 명입니다.

입출력 예 #2

  • 180, 120, 140 중 190보다 큰 수는 없으므로 0명입니다.

[문제 풀이]

const solution = (array, height) => array.sort((a,b)=> b-a).filter(x => x>height).length;

 

 

 

# 34. 중복된 숫자 개수

더보기

[문제 설명]

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 1,000
  • 0 ≤ n ≤ 1,000

입출력 예

 array                                                                                                                         n                         result
[1, 1, 2, 3, 4, 5] 1 2
[0, 2, 3, 4] 1 0

입출력 예 설명

입출력 예 #1

  • [1, 1, 2, 3, 4, 5] 에는 1이 2개 있습니다.

입출력 예 #2

  • [0, 2, 3, 4] 에는 1이 0개 있습니다.

[문제 풀이]

const solution = (array, n) => array.filter(x => x==n).length;