TIL

TIL 8/19 - 알고리즘 문제풀이

nbcssw 2024. 8. 19. 21:13

문제 1

  • 두 자연수 a와 b가 주어질 때, 이 둘의 최대공약수를 구하는 함수를 작성하세요
  • 제한사항:
    • a, b는 1 이상 1000 이하의 자연수입니다.
function solution(a, b) {
    let answer = 0;
    for (let i = 0; i <= Math.max(a, b); i++) {
        if (a % i === 0 && b % i === 0)
            answer = i;
    }
    return answer;
}

console.log(solution(50,16)); // 2

 

 

문제 2

주어진 배열에서 짝수와 홀수의 개수를 각각 세는 함수를 작성하세요. 함수는 [짝수 개수, 홀수 개수]의 배열을 반환해야 합니다.

제한사항:

  • 배열의 길이는 1 이상 1000 이하입니다.
  • 배열의 원소는 1 이상 1000 이하의 자연수입니다.
function solution(arr){
    let answer = [0,0];
    arr.forEach(a => {
        if (a % 2 === 0)
            answer[0] ++;
        else
            answer[1] ++;
    });
    return answer;
}

console.log(solution([1,2,3,4,5,6,7])); // [ 3, 4 ]

 

 

문제 3

문자열이 주어지면 해당 문자열을 역순으로 배치한 후, 알파벳을 하나씩 오른쪽으로 이동시킨 결과를 출력하세요. 예를 들어, a는 b, z는 a로 변환됩니다.

제한사항:

  • 문자열은 소문자 알파벳으로만 구성됩니다.
  • 문자열의 길이는 1 이상 1000 이하입니다.
function solution(arr){
    const answer = [];
    arr = [...arr].reverse();
    for(let i=0; i<arr.length; i++){
        let ASCI = arr[i].charCodeAt();
        answer.push(String.fromCharCode(ASCI+1));
    }

    return answer.join('');
}

console.log(solution("hello")); // pmmfi

 

 

문제 4

회전 초밥을 먹을 때, 접시들의 번호가 주어집니다. 이 중에서 임의의 연속된 접시를 선택하여 먹을 때, 가능한 모든 선택에서 가장 다양한 초밥 종류의 개수를 구하세요.

제한사항:

  • 접시의 개수는 2 이상 1000 이하입니다.
  • 각 접시는 1 이상 30 이하의 정수로 표현됩니다.

 

이해 못함.. 수요일에 해설 잘 듣기

 

 

 

문제 5

양의 정수가 주어질 때, 숫자에서 **k**개의 자릿수를 제거하여 얻을 수 있는 가장 큰 수를 구하세요.

제한사항:

  • **number**는 최대 1,000,000자리까지 입력될 수 있습니다.
  • **k**는 1 이상 len(number) - 1 이하입니다.
function solution(number, k) {
    const result = [];
    let arr = [...number.toString()];
    let max = 0;
    let count = arr.length - k;

    for (let j = 0; j < count; j++) {
        for (let i = 0; i < k+1; i++) {
            if (arr[i] > max)
                max = arr[i];
        }
        result.push(max);
        k -= arr.indexOf(max);
        arr.splice(0, arr.indexOf(max)+1);
        max = 0;
    }

    return result.join('')
}

console.log(solution(1924, 2)); // 94