[프로그래머스] 하샤드 수,음양 더하기,핸드폰 번호 가리기,중복된 숫자 개수, 가장 큰 수 찾기

Juyeon Lee·2024년 6월 30일

[새싹x코딩온]

목록 보기
12/23

하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

function solution(x) {
   let string = String(x);
   let sum = 0;
   for (let i = 0; i < string.length; i++) {
       sum += Number(string[i]);
   }
   if (x % sum === 0) {
       return true;
   } else {
       return false;
   }
}

예를 들어 x에 10이 들어왔다고 하면, 1+0을 해줘야 한다. 이를 위해 각 자릿수를 하나씩 뽑아주어야 하는데, string으로 변환된 x는 인덱스를 사용할 수 있다. 따라서 x를 string으로 바꿔준 뒤, loop를 돌며 미리 정의해둔 sum 변수에 각 자릿수를 더해준다. 여기서 각 자릿수는 string 형태이므로 Number형으로 변환해야 한다. 그런 다음 모든 자릿수 합으로 x를 나누었을 때 나누어지면 true를 반환하고, 그렇지 않으면 false를 반환한다.

음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

function solution(absolutes, signs) {
    let sum = 0;
    for (let i = 0; i < absolutes.length; i++) {
        if (signs[i] === true) {
            sum += absolutes[i];
        } else {
            sum -= absolutes[i];
        }
    }
    return sum;
}

먼저 sum 변수를 0으로 초기화하고, absolutes 배열을 순회하면서 각 요소를 signs 배열의 값에 따라 더하거나 빼줬다. signs[i]가 true일 때는 absolutes[i]를 sum에 더하고, 그렇지 않으면 absolutes[i]를 sum에서 빼준다.마지막으로 계산된 sum 값을 반환해줬다.

핸드폰 번호 가리기

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

function solution(phone_number) {
    let fourDigit = phone_number.slice(-4)
    let stars = "*".repeat(phone_number.length - 4)
    return stars + fourDigit
    
}

마지막 4자리는 slice 메서드를 이용해 구해주고 stars는 *문자열을 phone_number 길이에서 마지막 4자리를 뺀 수만큼 repeat해주고 둘을 더해주었다.

중복된 숫자 개수

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

function solution(array, n) {
    let result = 0;
    for(let i = 0; i < array.length; i++){
        if(array[i] === n){
            result++; 
        }
    }
    return result;
}

result 변수를 0으로 초기화하고, array 배열을 순회하여 각 원소가 n과 일치하는지 확인한다. 일치했을 때 result 변수를 증가시켜준다.

가장 큰 수 찾기

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(array) {
    let result = [];
    let maximum =Math.max(...array);
    result.push(maximum);
    let index = array.indexOf(maximum)
    result.push(index)
    
    return result
}

result라는 빈 배열을 만들어 준뒤 Math.max 메서드를 이용하여 array에서 가장 큰 숫자를 찾아주었다. 여기서 내가 놓쳤던 것이 Math.max 메서드는 배열을 직접 처리할 수 없다는 것이다. 배열내 숫자들을 각각의 인자로 변환하기 위해 spread 연산자를 이용했다. 그 중에 계속 큰 숫자를 빈 배열인 result에 push해주었고, array에서 maximum 숫자의 index를 찾아주면 되므로 그걸 찾아주고 또, result에 푸쉬해주었다.

0개의 댓글