Winnie The Pooh Bear 코딩테스트 입문

코딩테스트

코딩테스트 입문

코딩은 처음이라 2023. 6. 5. 10:45

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

프로그래머스 (programmers.co.kr)

코딩테스트 입문

 

 

 

약수 구하기

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 10,000

입출력 예

n result
24 [1,2,3,4,6,8,12,24]
29 [1,29]

입출력 예 설명

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.
  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

출력

function solution(n) {
    var divisors = []; // 약수를 저장할 배열을 초기화합니다.
    
    for (var i = 1; i <= n; i++) {
        if (n % i === 0) { // 현재 수가 n의 약수인 경우
            divisors.push(i); // 약수를 배열에 추가합니다.
        }
    }
    
    return divisors; // 약수를 담은 배열을 반환합니다.
}

n이 주어졌을 때 n의 약수를 오름차순으로 담은 배열을 반환하는 함수solution을 구현한 것입니다.

 주어진 문제에서 약수는 1부터 n가지의 수 중에서 n을 나누어 떨어지게 하는 수입니다.

따라서 반복문을 사용해 1 부터 n까지의 수를 순회하면서 현재 수가 n의 약수인지 확인합니다. n 을 현재 수로 나누었을 때 나머지가 0이면 현재 수는 n의 약수이므로, 이를 배열 divisors에 추가합니다.

반복문을 모두 순회한 수에는 divisors 배열에는 n의 약수가 오름차순으로 저장되어 있습니다. 

 

 

369 게임

문제 설명

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

제한사항

  • 1 ≤ order ≤ 1,000,000

입출력 예

order result
3 1
29423 2

입출력 예 설명

  • 3은 3이 1개 있으므로 1을 출력합니다.
  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

출력

function solution(order) {
    var count = 0; // 박수 횟수를 저장할 변수를 초기화합니다.

    // order를 문자열로 변환하여 각 자리 숫자를 확인합니다.
    var orderString = order.toString();
    
    for (var i = 0; i < orderString.length; i++) {
        var digit = parseInt(orderString[i]); // 현재 자리의 숫자를 가져옵니다.
        
        if (digit === 3 || digit === 6 || digit === 9) {
            count++; // 3, 6, 9가 있으면 박수 횟수를 증가시킵니다.
        }
    }
    
    return count; // 박수 횟수를 반환합니다.
}

주어진 문제에서는 숫자 order 를 문자열로 변환하여 각 자리의 숫자를 확인해야 합니다.

따라서 order를 toString()메서드를 사용해 문자열로 변환한 후, 반복문을 사용해 각 자리의 숫자를 확인합니다. 이때 parseInt() 함수를 사용해 문자열을 숫자로 변환합니다. 각 자리의 숫자를 확인하면서 숫자가 3,6,9 인 경우 박수 횟수를 증가시킵니다. 반복문을 모두 순회한 후에는 count 변수에 박수 횟수가 저장되어 있습니다. 이 값을 반환합니다.

 

 

숫자 찾기

문제 설명

정수 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

입출력 예 설명

  • 29183에서 1은 3번째에 있습니다.
  • 232443에서 4는 4번째에 처음 등장합니다.
  • 123456에 7은 없으므로 -1을 return 합니다.

출력

function solution(num, k) {
    var numString = num.toString(); // num을 문자열로 변환합니다.
    
    for (var i = 0; i < numString.length; i++) {
        if (parseInt(numString[i]) === k) {
            return i + 1; // k가 처음으로 나타나는 자리 수를 반환합니다. (인덱스가 0부터 시작하므로 +1을 해줍니다)
        }
    }
    
    return -1; // k가 없는 경우 -1을 반환합니다.
}

num 을 문자열로 변환하여 각 자리의 숫자를 확인해야 합니다.

따라서 num 을 toString()메서드를 사용해 문자열로 변환한 후, 반복문을 사용해 각 자리의 숫자를 확인합니다. 이때 parseInt()함수를 사용해 문자열을 숫자롤 변환합니다.

각 자리의 숫자를 확인하면서, 현재 자리의 숫자가 k와 일치하는지 확인하고 일치하면 현재 자리 수를 반환, 인덱스가 0부터 시작하므로 반환하기 전에 1을 더해줍니다.

반복문을 모두 순회한 후에도 k가 발견되지 않으면 -1을 반환합니다.

 

 

 

약수 구하기

문제 설명

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 < my_string 길이 < 100

입출력 예

my_string result
"Bcad" "abcd"
"heLLo" "ehllo"
"Python" "hnopty"

입출력 예 설명

  • "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.
  • "heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.
  • "Python"를 모두 소문자로 바꾸면 "python"이고 이를 알파벳 순으로 정렬하면 "hnopty"입니다.

출력

function solution(my_string) {
    var lowerCaseString = my_string.toLowerCase(); // 문자열을 소문자로 변환합니다.
    var sortedString = lowerCaseString.split('').sort().join(''); // 알파벳 순으로 정렬합니다.
    return sortedString; // 정렬된 문자열을 반환합니다.
}

문자열을 모두 소문자로 변환한 후 알파벳 순서로 정렬해야 합니다. 

따라서 toLowerCase()메서드를 사용해 문자열을 소문자로 변환한 후 split() 을 사용해 문자열을 각 문자로 분리합니다.

그리고 sort()메서들 사용해 분리된 문자를 알파벳 순으로 정렬합니다.

마지막으로 join 을 사용해 정렬된 문자들을 다시 하나의 문자열로 합칩니다.

반응형