JAVASCRIPT/코딩테스트

프로그래머스 코딩테스트 레벨 1 - 직사각형 별찍기[자바스크립트] 해석 및 답안

진짠 2023. 3. 22. 13:11
728x90
문제

두 개의 정수 n,m이 주어졌을때, 별(*) 문자를 이용해서 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력하면 된다.

 

예시에 나온 5와 3을 예로 들면,

 

*****

*****

*****

이런식으로 별표가 출력되게 한다.

 

제한조건

n,m은 각각 1000이하의 자연수. 코딩에서 딱히 신경을 쓰지 않았다.

 

먼저 자바스크립트의 기본적인 입출력을 위해 process.stdin을 사용했다.

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

보통 위와 같이 인터페이스 객체를 만들어 input과 output을 통해 입출력을 할 수 있다. 그리고 사용 시엔,

 

rl.on("line", (line) => {
    //line을 입력받아 line에 대한 데이터 처리를 하는 부분
});

on을 사용하여 값을 처리할 수 있다. 

이 객체를 사용하여 입력받은 두 자연수 n,m을 별모양의 직사각형으로 출력시킬 수 있었다.

 

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => { //입력받은 값 data
    let answer = data.split(" ").map(x => parseInt(x)); //빈칸을 기준으로 자른다.
    let str = "*";
    for(let i=0;i<answer[1];i++) { //m의 개수만큼 for문을 돌리고(세로줄이 된다.)
        console.log(str.repeat(answer[0])); //n의 개수만큼 *개수를 찍는다.(가로줄이 된다.)
    }
    
});

javascript의 repeat()이라는 메소드를 사용하여 해당 문자를 반복하는 기능을 사용해주었다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat

 

String.prototype.repeat() - JavaScript | MDN

repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.

developer.mozilla.org

기본형은 'str.repeat(count)' 이며, count에는 양의 정수가 들어가야 한다.

 

다른 사람의 풀이

입출력을 받는다는 개념 때문인지 풀이 방법은 비슷했다. 조금 새로웠던 점은

console.log((('*').repeat(m)+`\n`).repeat(n))

이런식으로 repeat() 메소드를 두 번 사용하여 '\n' 을 기준으로 n만큼 반복해서 세로줄을 만든 게 있었다.

 

for문을 사용하지 않아 코드 외관적으로 제일 깔끔한 모습이었다.

728x90