업데이트:

🔍 문제


문자열 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글자를 넘지 않는다.

2
3 ABC
5 /HTP

🟢 출력


각 테스트 케이스에 대해 P를 출력한다.

AAABBBCCC
/////HHHHHTTTTTPPPPP

📝 정답 코드

const fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

const newArr = []
const inputC = input[0]
let result = ''

for(let i=1; i<=inputC; ++i){
  const arr = input[i].split(' ').map((item) => item)
  newArr.push(arr)
}

for(let i=0; i < newArr.length; ++i){
  let reNum = newArr[i][0]
  let char = newArr[i][1].split('').map((item) => item)
  for(let j=0; j < char.length; ++j){
    for(let k=0; k < reNum; ++k){
      result += char[j];
    }
  }
  result += '\n'
} 
console.log(result)

💻 CODE REVIEW

👉🏻 입력 문자열 처리

우선, 입력 input을 줄별로 split 해주고 테스트 케이스인 첫번째 줄의 값을 따로 변수에 저장해두었다.

그리고 둘째줄부터는 반복횟수와 문자열을 split 해주었다.

나누어준 반복횟수와 문자열은 2차원 배열 newArr에 넣어주고 반복횟수는 reNum, 문자열은 char이라는 변수에 저장해주었다.

이 때, char 문자열이 ABC고 반복횟수가 3이라면 AAABBBCCC를 출력해주어야 하기 때문에 ABC를 또 split 해주었고 입력을 정제하는 과정이 끝났다.

문자열반복

👉🏻 풀이 방법

newArr의 길이만큼 반복하는 for문 안에서 문자(char[j])를 반복횟수(reNum)만큼 출력하도록 하였다. 조금 복잡하지만 결국 3중 for문이 되었다.

댓글남기기