ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩 테스트] 프로그래머스 JS 연습 - 가위바위보, 인덱스 바꾸기, 모스부호(1), 영어가 싫어요, 7의 개수
    웹/JavaScript 2023. 1. 18. 17:53

    1. 가위바위보

    문제 설명

    가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

    function solution(rsp) {
        var obj = {
            "0" : 5,
            "2" : 0,
            "5" : 2
        }
        return rsp.split('').map(x => obj[x]).join('')
    }

    객체는 obj[key] = value 라는 것을 이용해서 rsp를 split한 후 map 메소드를 이용하였다.

     

    2. 인덱스 바꾸기

    문제 설명

    문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

     

    function solution(my_string, num1, num2) {
        var arr = my_string.split('');
        [ arr[num1] , arr[num2] ] = [ arr[num2] , arr[num1]];
        return arr.join('');
    }

    string은 인덱스로 문자를 바꿀 수 없으니 배열에 저장하여 디스트럭처링을 이용하였다.

     

    3. 합성수 찾기

    문제 설명

    약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

    function solution(n) {
        var answer = 0;
        for (let i = 4; i <=n ; i++) {
            var sum = 0
            for (let j = 2; j <i; j++) {
                if (i % j === 0) sum +=1
            }
            answer += sum > 0 ? 1 : 0
        }
        return answer;
    }

    알고리즘으로 시간이 많이 걸린 문제였다. 하지만 for문에서 비효율적이다.

    j <= Math.sqrt(i)로 바꾸는 것이 좋다.

     

    4. 모스부호

     

    문제 설명

    머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
    모스부호는 다음과 같습니다.

    function solution(letter) {
        const morse = { 
        '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
        '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
        '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
        '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
        '-.--':'y','--..':'z'
    }
        return letter.split(" ").map(v => morse[v]).join('')
        
    }

     

    모스부호를 객체로 만든 후 obj[key] = value를 이용한다.

     

    5. 영어가 싫어요

     

    문제 설명

    머쓱이

    function solution(numbers) {
        var answer = numbers
        var str = {
            "zero" : 0,
            "one" : 1,
            "two" : 2,
            "three" :3, 
            "four" : 4, 
            "five" : 5, 
            "six" : 6, 
            "seven" : 7, 
            "eight" : 8, 
            "nine" : 9
     }
        for (let s in str) {
           answer= answer.replaceAll(s,str[s])
        }
       return answer * 1
    }

     for문을 str 객체의 키값으로 for문 돌린 후 전제 replace한다. 

    이때, 문자열로 나오므로 숫자형으로 전환이 필요하다.

     

    +) 7의 개수

    문제 설명

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

     

    function solution(array) {
        var answer = 0;
        for (let s of array) {
            answer+= s.toString().split('').filter(x => x === "7").length
        }
        return answer;
    }

    위에는 직접 푼 코드이고, 

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

    이것은 베스트 답안이다.

     

    +) max

     

    Math.max(a,b)

     

    +) 정수확인

    Number.isInteger(a)

     

    +) 문자열 찾기

    str.match(/[3|6|9]/g)

     

    +) string

    sort 제공 안함. arr에서 제공함

     

     

     

Designed by Tistory.