오늘은 하루종일 코테 문제만 풀었다...
백준을 처음 사용해봤는데, 입력값을 받는 함수부터 모조리 구현해야해서 다른 사이트에 비해 번거로운 것 같다.
새싹문제는 다 풀어볼까 싶지만.. 다음 단계를 풀지는 고민이다.
그리고 오늘 제일 고전했던 문제
2738번 행렬 덧셈
import Foundation
let nm = (readLine() ?? "").components(separatedBy: .whitespaces).compactMap(Int.init)
let n = nm[0]
let m = nm[1]
var arrA: [[Int]] = []
var arrB: [[Int]] = []
for row in 0..<(n * 2) {
if row < n {
arrA.append((readLine() ?? "").components(separatedBy: .whitespaces).compactMap(Int.init))
} else {
arrB.append((readLine() ?? "").components(separatedBy: .whitespaces).compactMap(Int.init))
}
}
var result: [[Int]] = []
for a in arrA.enumerated() {
var row: [Int] = []
for i in 0..<m {
row.append(a.element[i] + arrB[a.offset][i])
}
result.append(row)
}
print(result)
→ 기존 작성했던 코드였는데, 왜인지 자꾸 틀렸다고 했다.
결과 배열은 문제에서 요구하는 대로 잘 나왔었는데 영문을 모르겠었다.
시간 초과 때문인가...싶긴했는데 여기서 더 줄일 방법은 모르겠고...
for a in arrA.enumerated() {
var row: [Int] = []
for i in 0..<m {
row.append(a.element[i] + arrB[a.offset][i])
}
print(row.map(String.init).joined(separator: " "))
}
→ 그러다 발견한 사실은, 기존 코드에서는 배열을 바로 출력했다는 것이다.
4 4 4
6 6 6
5 6 100
형태로 나와야하는데
[[4, 4, 4], [6, 6, 6], [5, 6, 100]]
으로 나오고 있어서 틀렸다고 판정되고 있었던 거였다.
그래서 print(result)를 삭제하고 배열을 문자열로 출력하도록 코드를 수정하였다.
후... 왜 틀렸는지 알려주는 다른 사이트가 정말 친절하다는 것을 깨달았다...
여튼 그래도 정답을 맞췄으니 다행이었다.