프로그래머스

프로그래머스 9일차

ture403 2023. 5. 31. 22:24

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

직각삼각형 출력하기

문제

"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

 

정답풀이

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    const num = Number(input[0]);
    let logStr = ''
    for(let i = 0 ; i < num; i++) {
        for(let j = 0 ; j <= i; j++) {
            logStr+='*'
        }
        logStr+='\n'
    }
    console.log(logStr)
});

제공된 코드는 사용자로부터 명령 줄을 통해 입력을 받기 위해 readline 모듈을 사용하는 JavaScript 프로그램입니다. 이 코드는 process.stdin을 입력 소스로 사용하고 process.stdout을 출력 대상으로 사용하는 인터페이스 rl을 생성합니다.

프로그램은 사용자로부터 한 줄의 입력을 기대하며, 이 입력은 공백(' ')을 구분자로 사용하여 문자열 배열로 분할됩니다. 입력 배열의 첫 번째 요소는 Number(input[0])를 사용하여 숫자로 변환되고 num 변수에 할당됩니다.

프로그램은 빈 문자열 logStr을 초기화합니다. 두 개의 중첩된 반복문을 사용하여 삼각형 모양의 별표('*') 패턴을 나타내는 문자열을 생성합니다. 바깥쪽 반복문은 0부터 num-1까지 반복하고, 안쪽 반복문은 0부터 바깥쪽 반복문의 현재 인덱스 값까지 반복합니다. 각 반복에서는 별표가 logStr 문자열에 추가됩니다. 각 안쪽 반복문이 완료되면 새 줄 문자('\n')가 logStr에 추가됩니다.

마지막으로, logStr 문자열은 console.log(logStr)을 사용하여 콘솔에 출력됩니다.

 

문자 반복 출력하기

문제

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

 

문제풀이

function solution(my_string, n) {
   let answer ="";
    for(let i=0; i<my_string.length; i++){
        for(let j=0; j<n; j++){
            answer += my_string.charAt(i)
        }
    }
    return answer;
}

제공된 코드는 solution이라는 함수입니다. 이 함수는 두 개의 매개변수를 받습니다. 첫 번째 매개변수 my_string은 문자열이고, 두 번째 매개변수 n은 반복 횟수입니다.

함수는 빈 문자열 answer를 초기화합니다. 첫 번째 반복문은 my_string의 각 문자를 하나씩 탐색하기 위해 0부터 my_string.length-1까지 반복합니다. 두 번째 반복문은 n값만큼 현재 문자를 answer 문자열에 추가합니다. 이를 my_string의 모든 문자에 대해 반복합니다.

최종적으로, answer 문자열을 반환합니다. 이 문자열은 my_string의 각 문자를 n번 반복한 결과입니다.

순서쌍의 개수

문제

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

 

정답풀이

function solution(n) {
    // 정답 담기 위한 변수 선언
    let answer = 0;
    
    // x는 n의 제곱근의 정수 부분
    const x = parseInt(Math.sqrt(n));
    
    // 1부터 x까지 반복하면서 약수인지 확인
    // 약수일 경우, 항상 쌍이 있기 때문에 answer에 더하기 2
    for (let i = 1; i <= x; i++) {
        if (n % i == 0) {
            answer += 2;
        }
    }
    
    // 만약 Math.sqrt(n)이 정수면, 해당 경우는 Math.sqrt(n)을 약수로 가지는 것
    // 그렇기 때문에 -1
    if ( x == Math.sqrt(n) ) {
        answer -= 1;
    }
    
    // 정답 반환
    return answer;
}

함수는 먼저 결과를 저장하기 위한 변수 answer를 0으로 초기화합니다.

다음으로, n의 제곱근을 구한 후 정수 부분을 변수 x에 할당합니다. 이는 n의 약수를 탐색할 범위로 사용됩니다.

그 후, 1부터 x까지 반복문을 돌면서 n을 현재 숫자로 나눈 나머지가 0인지 확인합니다. 나머지가 0이라면 현재 숫자는 n의 약수이므로 answer에 2를 더합니다. 이는 약수의 쌍을 의미합니다.

마지막으로, Math.sqrt(n)이 정수라면 n의 제곱근은 n 자체를 약수로 가지므로 answer에서 1을 뺍니다.

최종적으로, answer 값을 반환합니다. 이 값은 n의 약수의 개수를 나타냅니다.

 

자릿수 더하기

문제

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

 

정답풀이

function solution(n)
{
    var answer = 0;
    var m = String(n);
    
    for ( let i = 0; i < m.length; i++) {
        answer += parseInt(m[i]);
    }
    return answer;
}

함수는 결과를 저장하기 위한 변수 answer를 0으로 초기화합니다. 그리고 n을 문자열로 변환하여 변수 m에 할당합니다.

다음으로, 문자열 m의 각 문자를 순회하는 반복문을 실행합니다. 반복문에서는 각 문자를 정수로 변환하여 answer에 더합니다.

마지막으로, answer 값을 반환합니다. 이 값은 n의 각 자리수를 모두 더한 결과를 나타냅니다.