프로그래머스 알고리즘 리뷰

SOMEmo·2022년 5월 14일
0
post-thumbnail

이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예

sreturn
"try hello world""TrY HeLlO WoRlD"

<제출 답안>

function solution(s) {
    var answer = '';
    const arr = s.split('');
    let num = 0;
    for(let i=0;i<arr.length;i++){
        if(arr[i] === " ") {
            answer += " ";
            num = 0;
            continue;
        } else if(num%2== 0 || num==0){
            answer += arr[i].toUpperCase();
        } else {
            answer +=arr[i].toLowerCase();
        }
        num++;
    }
    
    
    return answer;
}

직사각형 별찍기

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

제한 조건
n과 m은 각각 1000 이하인 자연수입니다.
예시
입력

5 3

출력

*****
*****
*****

<제출 답안>

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    for(let i=0; i<b;i++){
        for(let j=0;j<a;j++){
            process.stdout.write('*');
        }
        console.log('');
    }
    
});

<다른 사람 풀이>

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    const row = '*'.repeat(a)
    for(let i =0; i < b; i++){
        console.log(row)
    }

});

하샤드 수

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

제한 조건
x는 1 이상, 10000 이하인 정수입니다.
입출력 예

arrreturn
10true
12true
11false
13false

<제출 답안>

function solution(x) {
    var answer = true;
    const str = String(x);
    
    const arr = str.split('');
    
    let sum = 0;
    arr.forEach(x =>{
        sum+=parseInt(x);
    })
    if(x%sum==0) {
        answer = true;
    } else {
        answer = false;
    }
    return answer;
}

<다른 사람 풀이>

function Harshad(n){
  return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}

0개의 댓글