TIL #16 [프로그래머스 JavaScript] 카타코드 45-50 복습

DO YEON KIM·2024년 5월 7일
0

부트캠프

목록 보기
16/72

하루 하나씩 작성하는 TIL #16



이전에 풀었던 코딩테스트 문제들에 대해 복습하는 시간.
이전 벨로그에 다 작성되어 있는 문제이기 때문에 따로 문제 설명은 첨부하지 않겠다.


시저 암호

function solution(s, n) {
    var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var lower = "abcdefghijklmnopqrstuvwxyz";
    var answer = '';

    for (var i = 0; i < s.length; i++) {
        var text = s[i];
        // 문자가 아닌 공백일 경우 덧셈 할당
        if (text == ' ') {
            answer += ' ';
        } else {
            var textArr = upper.includes(text) ? upper : lower;
            // 대문자 문자열에 해당하는 문자가 있을 시 upper, 없다면 lower 할당
            var index = textArr.indexOf(text) + n;
            // 만약 더한 인덱스가 할당한 문자열의 길이보다 길거나 같을 경우 인덱스 - 문자열 길이 빼기
            if (index >= textArr.length) index -= textArr.length;
            // 계산한 인덱스에 해당하는 문자 덧셈 할당
            answer += textArr[index];
        }
    }
    return answer;
}

숫자 문자열과 영단어

function solution(s) {
    let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var answer = s;

    for(let i = 0; i < numbers.length; i++) {
        let arr = answer.split(numbers[i]);
        answer = arr.join(i);
    }

    return Number(answer);
}

문자열 내 마음대로 정렬하기

function solution(strings, n) {
    return strings.sort((a,b) => {
        if (a[n]>b[n]) return 1;
        else if (a[n]<b[n]) return -1;
        else return a > b ? 1 : -1;
        
    })
    
}

k번째 수

function solution(array, commands) {
    var answer = [];
    
    for(var i=0; i<commands.length;i++){
        var list = array.slice(commands[i][0]-1, commands[i]
        							[1]).sort((a,b)=>{return a-b});
        
        answer.push(list[commands[i][2]-1]);
    }

    return answer;
}

두 개 뽑아서 더하기

function solution(numbers) {
    var answer = [];
    for ( let i = 0; i < numbers.length; i++) {
      for ( let j = i + 1; j < numbers.length; j++) {
        let sum = numbers[i] + numbers[j];
        if( answer.indexOf(sum) === -1) {
          answer.push(sum);
        }
      }
    }
    answer.sort(function(a,b) {
      return a - b;
    })
    return answer;
}

가장 가까운 글자

function solution(s) {
    let stack = [];
    let ans = [];

    for(let i = 0; i < s.length; i++){
        if(!stack.includes(s[i])){
            ans.push(-1);
            stack.push(s[i]);
            continue;
        }

        if(stack.includes(s[i])){
            ans.push(stack.length - stack.lastIndexOf(s[i]));
            stack.push(s[i]);
            continue;
        }
    }

    return ans;
}
profile
프론트엔드 개발자를 향해서

0개의 댓글