Algorithm/문제풀이_백준
[Swift][구현] 백준 2290번 (LCD Test)
Joahnee
2022. 4. 26. 10:43
요구능력
구현
문제풀이
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()
}
}
}