728x90
문제
도전케이스
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let str = "";
for(let i = 0; i < b; i++)
{
for(let j = 0; j < a; j++)
{
str+=("*");
}
}
return str;
});
결과
error Output size differs 라는 에러가 떴다. 알아보니깐 이 문제는 return을 하는 것이 아닌 log를 찍어 그대로 결과 값을 출력 해야한다. 즉 초기화때 알려준 console.log(a);처럼 log를 찍어야했던 문제이다.
풀이
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++)
{
let str = "";
for(let j = 0; j < a; j++)
{
str+=("*");
}
console.log(str);
}
});
해설
B줄 만큼 별을 쌓아야하고, A만큼 쌓아야하기 때문에 2중 for문을 처음 떠올렸다. str 을 for문 안쪽에 돌려서 한줄을 표시하고 초기화 시켜줘야 한다. 안그러면 계속 별이 쌓여가면서 찍히기 때문! 2번째 for문에 왔을때 str에 += ("*"); 을 해주어서 별을 추가해주고 한줄이 완성되면 console.log(str);을 하여서 해당하는 별을 출력하고 다시 str을 초기화하는 식으로 반복하였다.
다른사람의 코드
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)
}
});
a만큼 repeat을 해주는 것이기때문에 원하는 글자인 '*'.repeat(a)를 통해 row에 원하는 만큼 별을 추가해주고 그 row를 반복해서 b줄만큼 log를 남겨서 해결한 case다 repeat을 사용해서 불필요하게 row에 초기화를 반복할 필요가 없게 만들었고 더 깔끔하게 보이는 코드를 작성한 것 같다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 3진법 뒤집기 (0) | 2024.05.24 |
---|---|
[프로그래머스/JS] 최대공약수와 최소공배수 (0) | 2024.05.23 |
[프로그래머스/JS] 행렬의 덧셈 (0) | 2024.05.21 |
[프로그래머스/JS] 약수의 개수와 덧셈 (0) | 2024.05.17 |
[프로그래머스/JS] 나누어 떨어지는 숫자 배열 (0) | 2024.05.09 |