Where who wants to meet someone
날짜 비교하기 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181838
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ date1:[Int], _ date2:[Int]) -> Int {
let a = date1.map { $0 < 10 ? ("0" + String($0)) : String($0) }.joined()
let b = date2.map { $0 < 10 ? ("0" + String($0)) : String($0) }.joined()
return a < b ? 1 : 0
}
- 같은 형식이라면 텍스트 자체로 비교할 수 있기 때문에 date1과 date2를 하나의 String으로 변환하여 비교를 수행
- 하지만 1~9월, 1~9일은 한자리이기 때문에 예외 케이스가 발생한다. 이를 방지하기 위해서 10 미만이라면(1자리라면) 앞에 0을 붙여줬다
- 그렇게 만든 a와 b를 비교해서 a가 b보다 작다면(날짜가 앞선다면) 1, 크다면(날짜가 늦다면) 0을 반환하도록 했다
- (하지만 a와 b를 하나의 return문에서 수행하면 type오류가 발생한다)
// 풀이 1
import Foundation
func solution(_ date1:[Int], _ date2:[Int]) -> Int {
let a = date1.map { $0 < 10 ? ("0" + String($0)) : String($0) }.joined()
let b = date2.map { $0 < 10 ? ("0" + String($0)) : String($0) }.joined()
return a < b ? 1 : 0
}
// 풀이 2
import Foundation
func solution(_ date1:[Int], _ date2:[Int]) -> Int {
func calc(_ date: [Int]) -> Int {
date[0] * 12 + date[1] * 31 + date[2]
}
return calc(date1) < calc(date2) ? 1 : 0
}
// 풀이 3
import Foundation
func solution(_ date1:[Int], _ date2:[Int]) -> Int {
let firstDate = date1.map { String($0) }.joined()
let secondDate = date2.map { String($0) }.joined()
if Int(firstDate)! < Int(secondDate)! { return 1 }
else { return 0 }
}
점수: +7
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
세 개의 구분자 (1) | 2024.02.13 |
---|---|
배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.02.08 |
빈 배열에 추가, 삭제하기 (0) | 2024.02.05 |
이차원 배열 대각선 순회하기 (0) | 2024.02.01 |
문자열 잘라서 정렬하기 (0) | 2024.02.01 |