본문 바로가기
프로그래머스 코딩 테스트

프로그래머스 : JavaScript 알고리즘 100일 챌린지 14일차

by dongjin6539 2023. 5. 29.
728x90
반응형

프로그래머스 : JavaScript 알고리즘 100일 챌린지 14일차

 

코딩테스트 입문 Day14

 

 

1. 가까운 수 : 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

function solution(array, n) {
    var answer = 0;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
array n result
[3, 10, 28] 20 28
[10, 11, 12] 13 12

 

답 확인하기
function solution(array, n) {
    var answer = 0;
    let min = 101;
    
    const sortArray = array.sort((a,b) => a-b);
    
    for(let i=0; i<sortArray.length; i++){
        const item = sortArray[i];
        if(min > Math.abs(n - item)){
            min = Math.abs(n-item);
            answer = item;
        }
    }
    return answer;
}

// Math.abs() : 주어진 숫자의 절대값을 반환합니다.

 

해설 확인하기

코드는 주어진 배열 array에서 주어진 숫자 n과 가장 가까운 값을 찾는 함수 solution입니다.

해당 함수는 다음과 같은 방식으로 동작합니다:

초기값으로 변수 answer를 0으로 설정합니다. 이 변수는 n과 가장 가까운 값을 나타냅니다.

변수 min을 101로 설정합니다. 이 변수는 n과 각 요소의 차이 중 가장 작은 값을 나타냅니다.

array 배열을 오름차순으로 정렬한 sortArray를 생성합니다.

반복문을 통해 sortArray 배열을 순회합니다.

현재 요소 sortArray[i]를 item 변수에 저장합니다.

주어진 숫자 n과 item의 차이의 절댓값이 현재의 최솟값 min보다 작다면, min과 answer를 갱신합니다. min은 현재의 최솟값으로, answer는 item으로 설정됩니다.

반복문이 종료되고 나면, answer에는 n과 가장 가까운 값을 저장하게 됩니다.

answer를 반환합니다.

즉, solution 함수는 주어진 배열 array에서 주어진 숫자 n과 가장 가까운 값을 찾아 반환합니다.

 

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

function solution(order) {
    var answer = 0;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
order result
3 1
29423 2
답 확인하기
function solution(order) {
    var answer = 0;
    const stringOrder = String(order);
    for(let i=0; i<stringOrder.length; i++){
        const item = stringOrder[i];
        if(item === '3' || item === '6' || item === '9'){
            answer += 1;
        }
    }
    return answer;
}

 

해설 확인하기

코드는 주어진 숫자 order에서 3, 6, 9 숫자의 개수를 세는 함수 solution입니다.

해당 함수는 다음과 같은 방식으로 동작합니다:

초기값으로 변수 answer를 0으로 설정합니다. 이 변수는 3, 6, 9 숫자의 개수를 나타냅니다.

order를 문자열로 변환한 stringOrder를 생성합니다.

반복문을 통해 stringOrder 문자열을 순회합니다.

현재 문자 stringOrder[i]를 item 변수에 저장합니다.

만약 item이 '3', '6', '9' 중 하나라면, answer를 1 증가시킵니다. 즉, 해당 숫자가 3, 6, 9 중 하나라면 손뼉을 치는 동작을 나타냅니다.

반복문이 종료되고 나면, answer에는 3, 6, 9 숫자의 개수가 저장되게 됩니다.

answer를 반환합니다.

즉, solution 함수는 주어진 숫자 order에서 3, 6, 9 숫자의 개수를 세어 반환합니다.

 

3. 암호 해독 : 군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다. 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

  • 암호화된 문자열 cipher를 주고받습니다.
  • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
function solution(cipher, code) {
    var answer = '';
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
cipher code result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk"
2 "fallback"

 

답 확인하기
function solution(cipher, code) {
    var answer = '';
    for(let i=code-1; i<cipher.length; i+=code){
        const item = cipher[i];
        answer += item;
    }
    return answer;
}

 

해설 확인하기

코드는 암호문 cipher와 코드 code를 이용하여 복호화된 문자열을 반환하는 함수 solution입니다.

해당 함수는 다음과 같은 방식으로 동작합니다:

초기값으로 빈 문자열 answer를 설정합니다. 이 변수는 복호화된 문자열을 나타냅니다.

반복문을 통해 i를 code-1부터 시작하여 i를 code씩 증가시킵니다. 이는 복호화된 문자열의 인덱스를 나타냅니다.

현재 인덱스 i에 해당하는 암호문의 문자 cipher[i]를 item 변수에 저장합니다.

item을 answer에 추가합니다.

반복문이 종료되고 나면, answer에는 복호화된 문자열이 저장되게 됩니다.

answer를 반환합니다.

즉, solution 함수는 주어진 암호문 cipher와 코드 code를 이용하여 복호화된 문자열을 생성하여 반환합니다. 복호화된 문자열은 암호문에서 주어진 코드의 위치에 해당하는 문자들을 순서대로 이어붙인 것입니다.

 

4. 대문자와 소문자 : 문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    var answer = '';
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
my_string result
"cccCCC" "CCCccc"
"abCdEfghiJ" "ABcDeFGHIj"

 

답 확인하기
function solution(my_string) {
    var answer = '';
    
    for(let i=0; i<my_string.length; i++){
        const item = my_string[i];
        const isCapital = item < 'a';
        if(isCapital){
            answer += item.toLowerCase();
        } else {
            answer += item.toUpperCase();
        }
    }
    return answer;
}

// toLowerCase() : 대문자를 소문자로 바꿔줍니다.
// toUpperCase() : 소문자를 대문자로 바꿔줍니다.

 

해설 확인하기

코드는 주어진 문자열 my_string의 대소문자를 변환하는 함수 solution입니다.

해당 함수는 다음과 같은 방식으로 동작합니다:

초기값으로 빈 문자열 answer를 설정합니다. 이 변수는 대소문자가 변환된 문자열을 나타냅니다.

반복문을 통해 my_string의 각 문자를 순회합니다.

현재 문자 my_string[i]를 item 변수에 저장합니다.

item이 대문자인지 소문자인지 판별하기 위해 isCapital 변수를 사용합니다. 이 변수는 item이 소문자보다 작은 ASCII 코드 값을 갖는지를 비교하여 판별합니다.

만약 item이 대문자라면 (isCapital이 true라면), 해당 문자를 소문자로 변환하여 answer에 추가합니다.

그렇지 않으면 (isCapital이 false라면), 해당 문자를 대문자로 변환하여 answer에 추가합니다.

반복문이 종료되고 나면, answer에는 대소문자가 변환된 문자열이 저장되게 됩니다.

answer를 반환합니다.

즉, solution 함수는 주어진 문자열 my_string의 대소문자를 서로 변환하여 반환합니다. 대문자는 소문자로, 소문자는 대문자로 변환됩니다.

 

728x90
반응형