728x90
https://www.acmicpc.net/problem/2884
첫 번째 시도.
let number = readLine()!.split(separator: " ").map {Int($0)!}
// 시간은 0~23시, 분은 0~59분 까지 그리고 60이 되면 시간에 +1하고 분은 0으로,
// 45를 빼서 남은 시간이 0보다 작아지면 분에다 +60을 하고 -45를 하면 됨.
var H = number[0], M = number[1]
var result = 0
if M-45 < 0 {
H = H-1
M = (M+60) - 45
if H < 0 {
H = H + 24
}
print("\(H) \(M)")
}
보기좋게 바로 틀렸다.
그 이유는 무엇일까?
그 이유는 아주 간단하게도 분 계산이 0이나 양수 였을때 나타나는 문제였다. if 조건절에 그럴 경우를 만들지 않아서 바로 틀렸다.
두 번째 시도.
import Foundation
let number = readLine()!.split(separator: " ").map {Int($0)!}
// 시간은 0~23시, 분은 0~59분 까지 그리고 60이 되면 시간에 +1하고 분은 0으로,
// 45를 빼서 남은 시간이 0보다 작아지면 분에다 +60을 하고 -45를 하면 됨.
var H = number[0], M = number[1]
var result = 0
if M-45 <= 0 { // 분 계산이 0이하일때
if M-45 < 0 { // 분 계산이 음수일 경우
H = H-1
M = (M+60) - 45
if H < 0 {
H = H + 24
}
print("\(H) \(M)")
}else { // 분 계산이 음수가 아닐때
M = M - 45
print("\(H) \(M)")
}
}
그래서 분 계산이 0이하일 경우 -> 여기서 나눠서 음수일 경우와 그게 아닐 경우로 나눠서 조건문을 작성했다.
하지만 뭔가 의아하게 보인다. 맨 상위 조건절은 분 계산이 0이하일 경우인데 else문을 보면 음수가 아닌 0이나 양수일 경우를 말하고 있다. 따라서 모순으로 틀리게 됐다.
세 번째 시도.
import Foundation
let number = readLine()!.split(separator: " ").map {Int($0)!}
// 시간은 0~23시, 분은 0~59분 까지 그리고 60이 되면 시간에 +1하고 분은 0으로,
// 45를 빼서 남은 시간이 0보다 작아지면 분에다 +60을 하고 -45를 하면 됨.
var H = number[0], M = number[1]
var result = 0
if M-45 <= 0 { // 분 계산이 0이하일때
if M-45 < 0 { // 분 계산이 음수일 경우
H = H-1
M = (M+60) - 45
if H < 0 {
H = H + 24
}
print("\(H) \(M)")
}
}else { // 분 계산이 음수가 아닐때
M = M - 45
print("\(H) \(M)")
}
이번엔 음수일 경우와 아닐 경우를 제대로 나눠서 조건문을 작성했지만 틀렸다. 그 이유는 맨 위 if 조건문에서 M-45 <= 0때문이다.
애초에 0이하라고 전제조건을 설정했기 때문에 이것도 모순이었다.
최종본
import Foundation
let number = readLine()!.split(separator: " ").map {Int($0)!}
// 시간은 0~23시, 분은 0~59분 까지 그리고 60이 되면 시간에 +1하고 분은 0으로,
// 45를 빼서 남은 시간이 0보다 작아지면 분에다 +60을 하고 -45를 하면 됨.
var H = number[0], M = number[1]
var result = 0
if M-45 < 0 { // 분 계산이 음수일 경우
H = H-1
M = (M+60) - 45
if H < 0 {
H = H + 24
}
print("\(H) \(M)")
} else { // 분 계산이 음수가 아닐때
M = M - 45
print("\(H) \(M)")
}
728x90
'PS' 카테고리의 다른 글
[swift] 15727 - 조별과제를 하려는데 조장이 사라졌다. (0) | 2022.12.26 |
---|---|
[swift] 2920번 음계 (0) | 2022.12.01 |
[swift] 9086 - 문자열 (0) | 2022.11.25 |
11866번 요세푸스 문제 : SWIFT (1) | 2022.10.03 |
10866번 덱 / swift (1) | 2022.10.03 |