요구능력
구현
문제풀이
1) 우선 arr배열에 s가 1일때 만들 수 있는 숫자의 형태를 모두 저장해줬다.
3차원 배열로 저장했고 " "의 경우에는 0으로 저장하고, "-"나 "|"의 경우에는 1로 저장하였다.
2) 규칙찾기
2로 나누어 떨어지는 곳은 "-"이다.
문제를 보면 알겠지만, 2로 나누어떨어지는 곳은 "-"이다.
그리고 2로 나누어 떨어지는 곳은 양쪽 끝이 " "이고, "-"문자가 s개만큼 생긴다.
그래서 문제에서 s + 2라고 한것이다.
2로 나누어 떨어지지 않는 곳은 "|"이다.
양쪽끝이 "|"이고, " "공백이 s개만큼 생긴다.
2로 나누어 떨어지는곳과 다른점은
2로 나누어 떨어지지 않는곳은 세로로 s줄만큼 더 생긴다는 것이다.
이게, 말로설명하고 그림으로 설명하는것보다 직접 코드를 쳐보면서 출력해보면서 이해하는게 빠를것이다.
후기
구현 열심히해야겠다.
코드
let sn = readLine()!.split(separator: " ").map{String($0)}
let s = Int(sn[0])!
var n = [Int]()
for i in Array(sn[1]){
n.append(Int(String(i))!)
}
let arr = [
[[0, 1, 0], [1, 0, 1], [0, 0, 0], [1, 0, 1], [0, 1, 0]],
[[0, 0, 0], [0, 0, 1], [0, 0, 0], [0, 0, 1], [0, 0, 0]],
[[0, 1, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 0]],
[[0, 1, 0], [0, 0, 1], [0, 1, 0], [0, 0, 1], [0, 1, 0]],
[[0, 0, 0], [1, 0, 1], [0, 1, 0], [0, 0, 1], [0, 0, 0]],
[[0, 1, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 0]],
[[0, 1, 0], [1, 0, 0], [0, 1, 0], [1, 0, 1], [0, 1, 0]],
[[0, 1, 0], [0, 0, 1], [0, 0, 0], [0, 0, 1], [0, 0, 0]],
[[0, 1, 0], [1, 0, 1], [0, 1, 0], [1, 0, 1], [0, 1, 0]],
[[0, 1, 0], [1, 0, 1], [0, 1, 0], [0, 0, 1], [0, 1, 0]]
]
for r in 0..<5{
if r % 2 == 0{
for i in 0..<n.count{
let d = n[i]
print(" ", terminator: "")
for _ in 0..<s{
print(arr[d][r][1] == 1 ? "-" : " ", terminator: "")
}
print(" ", terminator: "")
print(i == n.count - 1 ? "\n" : " ", terminator: "")
}
}else{
for _ in 0..<s{
for i in 0..<n.count{
let d = n[i] //현재 수
print(arr[d][r][0] == 1 ? "|" : " ", terminator: "")
for _ in 0..<s{
print(" ", terminator: "")
}
print(arr[d][r][2] == 1 ? "|" : " ", terminator: "")
print(" ",terminator: "") //각 숫자사이의 공백
}
print()
}
}
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][Two-Pointer] 백준 1644번 (소수의 연속합) (0) | 2022.05.09 |
---|---|
[Swift][Two-Pointer] 백준 1806번 (부분합) (0) | 2022.05.09 |
[Swift][시뮬레이션과 구현] 백준 15685번 (드래곤 커브) (0) | 2022.04.25 |
[Swift][구현] 백준 14503번 (로봇청소기) (0) | 2022.04.20 |
[Swift][Bruteforce] 백준 6064번(카잉 달력) (0) | 2022.04.11 |
댓글