🌠 문제

문자열 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) {
    let arr1 = str1.split("");
    let arr2 = str2.split("");
    while (arr1.length != 0) {
        let tmp = arr1.shift();
        let toggle = -1;
        if (tmp === arr2[0]) {
            for (let i = 0; i <= arr2.length - 2; i++) {
                if (arr1[i] != arr2[i+1]) {
                    toggle = 1;
                    break;
                } 
            }
            if (toggle == -1) {
                return 1;
            }
        }
    }
    return 2;
}

🌠 문제

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 
  • 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며,
    각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 + 와 - 중 하나입니다.

🌠 입출력 예

quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]

🌠 입출력 예 설명

입출력 예 #1

  • 3 - 4 = -3 은 틀린 수식이므로 "X", 5 + 6 = 11 은 옳은 수식이므로 "O" 입니다. 따라서 ["X", "O"]를 return합니다.

입출력 예 #2

  • 19 - 6 = 13 은 옳은 수식이므로 "O", 5 + 66 = 71 은 옳은 수식이므로 "O", 5 - 15 = 63 은 틀린 수식이므로 "X", 3 - 1 = 2는 옳은 수식이므로 "O" 따라서 ["O", "O", "X", "O"]를 return합니다.

🧞 풀이

function solution(quiz) {
    let answer = [];
    while (quiz.length != 0) {
        let exp = quiz.shift().split(" ");
        let a = 0; 
        if (exp[1] == "+") {
            a = parseInt(exp[0]) + parseInt(exp[2]);
        } else {
            a = parseInt(exp[0]) - parseInt(exp[2]);
        }
        let b = exp[4];
        if (a == b) {
            answer.push("O");
        } else {
            answer.push("X");
        }
    }
    return answer;
}

 

🌠 문제

정수 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) {
    let answer = 0;
    let array = n.toString().split("").map(Number);
    while (array.length != 0) {
        answer += array.shift();
    }
    return answer;
}

🌠 문제

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

🌠 입출력 예

n numlist result
3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12]
5 [1, 9, 3, 10, 13, 5] [10, 5]
12 [2, 100, 120, 600, 12, 12] [120, 600, 12, 12]

🌠 입출력 예 설명

입출력 예 #1

  • numlist에서 3의 배수만을 남긴 [6, 9, 12]를 return합니다.

입출력 예 #2

  • numlist에서 5의 배수만을 남긴 [10, 5]를 return합니다.

입출력 예 #3

  • numlist에서 12의 배수만을 남긴 [120, 600, 12, 12]를 return합니다.

🧞 풀이

function solution(n, numlist) {
    let answer = [];
    while (numlist.length != 0) {
        let tmp = numlist.shift();
        if (tmp % n == 0) {
            answer.push(tmp);
        }
    }
    return answer;
}

🌠 문제

정수 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) {
    let array = num.toString().split("").map(Number);
    if (array.indexOf(k) != -1) {
        return array.indexOf(k)+1;
    } else {
        return -1;
    }
}

🌠 문제

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 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) {
    let answer = 0;
    if (s1.length >= s2.length) {
        while (s2.length != 0) {
            let tmp = s2.shift();
            if (s1.indexOf(tmp) != -1) {
                answer += 1;
            }
        }
    } else {
        while (s1.length != 0) {
            let tmp = s1.shift();
            if (s2.indexOf(tmp) != -1) {
                answer += 1;
            }
        }
    }
    return answer;
}

🌠 문제

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) {
    let arr = my_string.split(" ");
    let buho = "+";
    let answer = 0;
    while (arr.length != 0) {
        let tmp = arr.shift();
        if (tmp == "+") {
            buho = "+"
        } else if (tmp =="-") {
            buho = "-"
        } else {
            let num = parseInt(tmp);
            if (buho == "+") {
                answer += num;
            } else {
                answer -= num;
            }
        }
    }
    return answer;
}

🌠 문제

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

🌠 제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

🌠 입출력 예

array result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

🌠 입출력 예 설명

입출력 예 #1

  • 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.

입출력 예 #2

  • 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

🧞 풀이

// deep copy: 깊은 복사
// shallow copy: 얕은 복사

function solution(array) {
    let new_arr = array.slice().sort((a, b) => b - a);
    let answer = [new_arr[0], array.indexOf(new_arr[0])];
    return answer;
}

🌠 문제

머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 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) {
    let array = message.split("");
    return array.length * 2;
}

+ Recent posts