Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 리트코드
- HTML
- 개발일기
- 코드스테이츠
- 프로그래머스
- 프론트개발공부
- 날씨 웹 만들기
- 엘리스
- 개발공부
- leetcode
- JavaScript
- 부트캠프
- 자바스크립트 split()
- 자바스크립트 sort()
- 삼항연산자
- 프론트개발
- 간단한 날씨 웹 만들기
- 엘리스 ai 트랙
- [파이썬 실습] 중급 문제
- 자바스크립트 날씨
- 자바스크립트 날씨 웹 만들기
- 자바스크립트
- 엘리스 AI 트랙 5기
- [AI 5기] 연습 문제집
- 코딩부트캠프
- 자바스크립트 reduce()
- reactnativecli
- [파이썬 실습] 기초 문제
- RN 프로젝트
- [파이썬 실습] 심화 문제
Archives
- Today
- Total
개발조각
[프로그래머스] 직사각형 별찍기 본문
728x90
반응형
이번 문제는 프로그래머스 Level 1에 3페이지 마지막 문제라서 그런지 뭔가 코드가 좀 이상하네요.
여기서는 return으로 답을 호출해주는게 아니라 console.log()로 호출해야지 답으로 나옵니다.
해결방안
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
// console.log(a);
// console.log(b);
// console.log(n);
let star = '*'.repeat(a);
let str = '';
for(let i=0; i<b; i++){
str+= `${star}\n`
}
console.log(str)
});
쉽게 설명하면
// 5 3가 입력되면 a=5; b=3; 입니다.
let star = '*'.repeat(a);
let str = '';
for(let i=0; i<b; i++){
str+= `${star}\n`
}
return str;
해결방안 순서
- a번 만큼 "*"찍어서 가로길이 만들기
- a번 만킄 *을 찍은 문자열을 b번 반복해서 세로 길이 만들기
1단계. a번 만큼 "*"찍어서 가로길이 만들기
let star = '*'.repeat(a);
먼저 가로길이를 만들어 주었습니다.
예전이었으면 for문을 돌렸겠지만 이제는 내장 함수를 쓰면 쉽게 해결된다는 걸 알기 때문에😆
내장 함수를 사용해주었습니다.
이때 사용한 내장 함수는 repeat()메소드를 사용해주었습니다.
MDN Web Docs
String.prototype.repeat()
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.
구문 : str.repeat(count);
- count : 문자열을 반복할 횟수. 0과 양의 무한대 사이의 정수([0, +∞)).
// repeat()메서드 예제
'abc'.repeat(-1); // RangeError
'abc'.repeat(0); // ''
'abc'.repeat(1); // 'abc'
'abc'.repeat(2); // 'abcabc'
'abc'.repeat(3.5); // 'abcabcabc'
'abc'.repeat(1/0); // RangeError
({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2);
// 'abcabc'
테스트 1 (a=5; b=3)
let star = '*'.repeat(a); -> '*****'
테스트 2 (a=2; b=2)
let star = '*'.repeat(a); -> '**'
2단계. a번 만킄 *을 찍은 문자열을 b번 반복해서 세로길이 만들기
for(let i=0; i<b; i++){
str+= `${star}\n`
}
세로 길이를 만들기 위해 for문을 썼습니다.
for문에서 1단계에서 만든 star을 b번만큼 반복해 주어서 str빈 문자열에 이어 붙여줬습니다.
여기서 그냥 이어 붙여주면 일열로 쭉 붙여지게 돼서
문자열 star 엔터를 같이 써주어야 됩니다.
코드에서 엔터를 넣는 방법은 두 가지가 있습니다.
- \n
- 템플릿 리터럴에서 엔터 넣기
// 1번
\n
// 2번
`
`
코드로 쓰면 이렇게 됩니다.
여기서 템플릿 리터럴에 대해 설명하자면
템플릿 리터럴 ("template strings" (템플릿 문자열))
- ES6부터 새로 도입된 문자열 표기법입니다.
- 문자열 생성 시 따옴표 대신, 백틱(`)을 사용합니다.
- ${ } 사이에 변수나 연산 등을 삽입할 수 있습니다.
이렇습니다.
저는 코드를 짤 때 템플릿 리터럴로 쓰기 편해서 템플릿 리터럴로 썼고요. 엔터 표시는 보기 편하게 \n을 넣어주었습니다.
테스트 1 (a=5; b=3)
let star = '*'.repeat(a); -> '*****'
for(let i=0; i<b; i++) -> 0, 1, 2 (3번 반복)
i=0
str+= `${star}\n`
str =
'*****
'
i=1
str+= `${star}\n`
str =
'*****
*****
'
i=1
str+= `${star}\n`
str =
'*****
*****
*****
'
테스트 2 (a=2; b=2)
let star = '*'.repeat(a); -> '**'
for(let i=0; i<b; i++) -> 0, 1 (2번 반복)
i=0
str+= `${star}\n`
str =
'**
'
i=1
str+= `${star}\n`
str =
'**
**
'
여기까지 프로그래머스 직사각형 별찍기 해결방안에 대해 설명해보았습니다.
728x90
반응형
'알고리즘🅰 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] n^2 배열 자르기 (0) | 2022.03.13 |
---|---|
[프로그래머스] [1차] 다트 게임 (0) | 2022.03.13 |
[프로그래머스] 행렬의 덧셈 (0) | 2022.03.08 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2022.03.08 |
[프로그래머스] 하샤드 수 (0) | 2022.03.08 |
Comments