데이터구조와 알고리즘
백준 2884 - 다른 사람 코드 보기
DesignThinker
2021. 10. 24. 18:23
https://www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
문제 요약
시간/분 입력 시 45분을 뺀 결과를 나타내는 문제
내가 푼 방법 - 시간(H), 분(M) 각각 계산하기
분(M)이 45분 미만일 때 단순 뺄셈으로는 되지 않는다는 점을 바탕으로 로직 작성
import Foundation
let line = readLine()!
let lineArr = line.components(separatedBy: " ")
var h = Int(lineArr[0])!
var m = Int(lineArr[1])!
if m < 45 {
(h == 0) ? (h = 23) : (h -= 1)
m += 15
} else {
m -= 45
}
print(h, m)
다른 사람이 푼 방법 - 시간(H)을 분(M)으로 환산
let input = readLine()!.split(separator: " ")
let result: Int = (60 * Int(input[0])! + Int(input[1])! - 45) + 60 * 24
print((result / 60) % 24, result % 60)
이 코드를 보고 감탄해버렸다.
if 문 sectino에 있는 문제인데 if문 하나 사용하지 않았다.
궁금한 것
그런데 상수 result를 Type Inference로 처리하지 않고 Annotation 한 이유가 있을까?
=> 내가 해봤을때는 inference로도 해결되었다.
한가지 더 배운 것
.components(separatedBy:)를 사용하지 않고 .split(separator:)를 사용함으로써 import Foundation을 하지 않아도 된다는 것을 알았다.