Link
문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오.
즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다.
S에는 QR Code "alphanumeric" 문자만 들어있다.QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.
입력 > 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.
출력 > 각 테스트 케이스에 대해 P를 출력한다.
| 예제 입력
2
3 ABC
5 /HTP
| 예제 출력
AAABBBCCC
/////HHHHHTTTTTPPPPP
제출
1)
const input = (
process.platform === "linux"
? require("fs").readFileSync("/dev/stdin").toString()
: `2
3 ABC
5 /HTP`
).split("\n");
const T = input[0];
let answer = "";
for (let i = 1; i <= T; i++) {
let R = input[i].trim()[0];
let [...S] = input[i].trim().split(" ")[1];
answer += `${S.map((item) => item.repeat(R)).join("")}\n`;
}
console.log(answer);
2) 구조분해 할당과 for문을 하나 더 사용하여 시간 단축하기
const input = (
process.platform === "linux"
? require("fs").readFileSync("/dev/stdin").toString()
: `2
3 ABC
5 /HTP`
).split("\n");
const T = input[0];
for (let i = 1; i <= T; i++) {
let answer = "";
let [R, S] = input[i].trim().split(" ");
for (let j = 0; j < S.length; j++) {
answer += S[j].repeat(R);
}
console.log(answer);
}
풀이과정
입력받은 문자열을 S의 배열 요소로 저장한 후, repeat 메소드를 사용하여 각 문자열을 반복한 뒤 join으로 합쳐준다.
구조분해할당과 for문을 활용하면 map을 사용하지 않고 구현할 수 있다.
개념
repeat()
- 문자열을 주어진 횟수만큼 반복해서 이어붙인 새 문자열을 반환한다.
- 반복 횟수는 양의 정수여야하고, 최대 문자열 크기를 넘어서면 안된다.
Comment
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1152: 단어의 개수 (javascript) (0) | 2022.07.05 |
---|---|
[백준] 1157: 단어공부 (javascript) (0) | 2022.07.05 |
[백준] 10809: 알파벳 찾기 (javascript) (0) | 2022.06.28 |
[백준] 11720: 숫자의 합 (javascript) (0) | 2022.06.28 |
[백준] 11654: 아스키 코드 (javascript) (0) | 2022.06.28 |