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
기본형은 'str.repeat(count)' 이며, count에는 양의 정수가 들어가야 한다.
다른 사람의 풀이
입출력을 받는다는 개념 때문인지 풀이 방법은 비슷했다. 조금 새로웠던 점은
console.log((('*').repeat(m)+`\n`).repeat(n))
이런식으로 repeat() 메소드를 두 번 사용하여 '\n' 을 기준으로 n만큼 반복해서 세로줄을 만든 게 있었다.
for문을 사용하지 않아 코드 외관적으로 제일 깔끔한 모습이었다.
728x90