728x90
문제
문자열 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를 출력한다.
소깡이 풀이
import Foundation
let caseCount = Int(readLine()!)!
var resultList: [String] = []
for _ in 0...caseCount-1 {
let input = readLine()!.split(separator: " ")
let repeatCount = Int(input[0])
let string = input[1]
let arrayString = Array(string).map { $0 }
var list: [Character] = []
for item in arrayString {
for _ in 1...repeatCount! {
list.append(item)
}
}
let result = String(list)
resultList.append(result)
}
for item in resultList {
print(item)
}
수정하고 싶은 부분
✅ 반복문
(수정중 ..)
✅ 반복문 내의 print문 (print문을 한번만 사용할 수는 없는가?)
지난번에도 한번 사용했었는데 .. 오랜만이라서 또 까먹음 ㅋㅋ ..
for item in resultList {
print(item)
}
print(resultList.joined(separator: "\n"))
for _ in 구문을 아래 joined(separator:)를 사용해서 print문을 한번만 호출해 출력값을 반환할 수 있다.
다른 풀이
repeating을 사용해서 문자열을 반복할 수 있다.
let str = String(repeating: "ㅎ", count: 10)
let T = Int(readLine()!)!
(0..<T).forEach { _ in
let input = readLine()!.split(separator: " ")
let R = Int(input[0])!
let S = input[1]
S.forEach { s in
print(String(repeating: s, count: R), terminator: "")
}
print() // Test case 별로 구분이 되도록 줄바꿈
}
'Algorithm' 카테고리의 다른 글
[백준] 상수 (0) | 2022.09.11 |
---|---|
[백준] 1157번: 단어 공부 (0) | 2022.09.11 |
백준 - 1차원 배열 (1) | 2022.08.27 |
백준 - 1110번 (더하기 사이클) (0) | 2022.08.23 |
백준 - 10951번 (0) | 2022.08.23 |