🔴 문제
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12969
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
n과 m은 각각 1000 이하인 자연수입니다.
예시
입력
5 3
출력
***** ***** *****
🔵 풀이
🖌️ 풀이 1
("*" n개 -> \n ) * m개를 출력하면 될 것 같다.
그런데 주어진 코드를 보니, readLine(), components, map을 쓰라고 되어 있어서 다음과 같이 코드를 짰다.
import Foundation
let n = readLine()!.components(separatedBy: [" "]).map { Int($0)! }
let (a, b) = (n[0], n[1])
print(String(repeating: String(repeating: "*", count: a) + "\n", count: b))
여기서 고민되는 것은, 출력이 직사각형에서 끝나지 않고 엔터("\n")가 같이 출력된다는 것이다.
다행히 에러는 없었지만...
// 3 2 를 입력헸을 때 출력되어야 하는 것
"***
***"
//실제 출력되는 것
"***
***
"
🖌️ 풀이 2
위 문제를 해결하기 위해 다른 풀이를 살펴보니,
한 줄씩 print를 반복하는 방법도 있었고,
for _ in 0..<b {
print(String(repeating: "*", count: a))
}
🖌️ 풀이 3
별을 Array로 만든 후 joined()로 합치는 방법도 있었다.
print(Array(repeating: String(repeating: "*", count: a), count: b).joined(separator: "\n"))
'Swift > Code Kata (알고리즘)' 카테고리의 다른 글
[Swift|코드카타] (프로그래머스) #40. 3진법 뒤집기 - pow(_:_:) 사용법, reverse(), reversed() 차이, init(_:radix:) 사용법 (0) | 2024.03.13 |
---|---|
[Swift|코드카타] (프로그래머스) #39. 최대공약수와 최소공배수 (0) | 2024.03.12 |
[Swift|코드카타] (프로그래머스) #37. 행렬의 덧셈 (0) | 2024.03.11 |
[Swift|코드카타] (프로그래머스) #36. 문자열 다루기 기본 (0) | 2024.03.09 |
[Swift|코드카타] (프로그래머스) #34. 문자열 내림차순으로 배치하기 - sorted()는 배열을 반환한다 (0) | 2024.03.07 |