주말 중에 if단계를 전부 끝낼까 싶었는데... 아무리 생각해봐도 주말에는 스트레스 없이 쉬는 시간이 필요할 것 같아 그냥 평일에만 알고리즘을 연습하고자 한다...
* 2753번
1)
let insertKey = readLine()!
if Int(insertKey)! % 400 == 0 {
print("1")
} else if Int(insertKey)! % 4 == 0 && Int(insertKey)! % 100 != 0 {
print("1")
} else {
print("0")
}
- 윤년 문제의 경우 다양한 풀이방식이 있겠지만, 나는 if문을 쓸 때 순서를 파악하는 것이 가장 중요하다고 생각했다.
- 4의 배수, 100의 배수, 400의 배수 등 여러가지 기준이 한 번에 제시되기 때문에 이를 효율적인 순서에 맞게 배치하고자 했다.
* 14681번
1)
let a = readLine()!
let b = readLine()!
if Double(a)! > 0 && Double(b)! > 0 {
print("1")
} else if Double(a)! < 0 && Double(b)! > 0 {
print("2")
} else if Double(a)! < 0 && Double(b)! < 0 {
print("3")
} else if Double(a)! > 0 && Double(b)! < 0 {
print("4")
} else {
print("0.0")
}
- 머리 속으로는 (+, +), (-, +) 등의 사분면 개념을 기준으로 케이스를 적용하면 어떨까 했는데, 오히려 4가지 케이스를 정의 내리는 과정이 더 걸릴 거 같아서 그냥 if 문으로 진행했다.
* 2884번
1)
var a: [Int]
var b = readLine()!.split(separator: " ").map { Int(String($0))! }
a = b
if a[0] == 0 && a[1] < 45 {
print("23", a[1] + 60 - 45)
} else if a[0] != 0 && a[1] < 45 {
print(a[0] - 1, a[1] + 60 - 45)
} else {
print(a[0], a[1] - 45)
}
- 첫 번째 if문에서 "23"을 그대로 프린트한게 뭔가 마음에 크게 걸린다. 저걸 어떻게든 바꿔 넣고 싶은 충동...
- if 단계 알고리즘 문제가 다 끝나고 전반적으로 최종 리뷰할때 다시 풀어봐야겠다.
정리(Today I Learned)
- readLine은 기본적으로 string? 형태인데, map을 적용하면 int 형태로도 사용 가능하다는 것을 잊지말자!
- 입력 1줄 -> split or components(speratedBy), 입력 2줄 -> readLine() * 2
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 2739, 10950번 Swift 알고리즘 연습 (1) | 2022.03.24 |
---|---|
백준 2525, 2480번 Swift 알고리즘 연습 (0) | 2022.03.22 |
백준 1330, 9498번 Swift 알고리즘 연습 (0) | 2022.03.18 |
백준 18108, 10430, 2588번 Swift 알고리즘 연습 (0) | 2022.03.17 |
백준 1008, 10869, 10926번 Swift 알고리즘 연습 (0) | 2022.03.16 |