Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- Custom PageViewController
- dynamic height
- UITableView
- parse
- Decodable
- JSON
- swift
- 위클리챌린지
- CustomCode
- 티스토리챌린지
- JSONSerialization
- 정보처리기사 실기
- IOS
- RealmSwift
- JSONParser
- SwiftGen
- cocoapods
- PageViewController
- Pod
- pbxfilesystemsynchronizedrootgroup
- Codable
- 2018 KAKAO BLIND RECRUITMENT
- storybaord
- issecuretextentry
- 정보처리기사
- Xcode
- programmers
- pbxgroup
- 정보처리기사 실기 요약본
Archives
- Today
- Total
iOS 개발일기
[Swift] 프로그래머스(위클리 챌린지 1주차) -부족한 금액 계산하기 본문
https://programmers.co.kr/learn/courses/30/lessons/82612
나의 풀이
func solution(_ price: Int, _ money: Int, _ count: Int) -> Int64 {
let totalPrice = (0..<count).map({($0 + 1) * price}).reduce(0, +)
return totalPrice < money ? 0 : Int64(totalPrice - money)
}
가독성을 고려한 다른 풀이들
풀이 1.
func solution(_ price: Int, _ money: Int, _ count: Int) -> Int64 {
var answer = money
for i in 0..<count {
answer -= (i + 1) * price
}
return answer < 0 ? -Int64(answer) : 0
}
풀이 2.
func solution(_ price: Int, _ money: Int, _ count: Int) -> Int64 {
var total = 0
for i in 0..<count {
total += (i + 1) * price
}
return total - money < 0 ? 0 : Int64(total - money)
}
풀이 2의 경우에는 해답은 될 수 있지만 일부 문제에서 시간초과가 떴었습니다.
재실행했을 경우에는 시간초과가 뜨지않았지만 왜 이런 현상이 일어났는지 궁금해져서 검색을 조금 해봤습니다.
추가된 풀이
func solution(_ price: Int, _ money: Int, _ count: Int) -> Int64 {
let total = price * (count * (count + 1)) / 2
return money >= total ? 0 : Int64(total - money)
}
다른 언어로 풀이를 하신 분들 대부분이 가우스 공식을 사용하여 풀었더군요.
아직 배울게 많습니다...
https://post.naver.com/viewer/postView.nhn?volumeNo=27517848
이 글을 참고해보니 사칙연산별 연산속도가 미세하게나마 차이가 나더군요.
CPU 성능과 같은 여러 가지 환경에 따라 연산속도의 차이가 있지만 기본적으로 사칙연산별 연산속도가 조금씩 다르다는 걸 알게되었습니다.
이 미세한 차이가 시간초과에 영향을 미치는지는 잘 모르겠지만요...
시간초과의 원인이 이 문제가 아니라면 알고계신 분께서 알려주시면 감사하겠습니다.
'코딩테스트' 카테고리의 다른 글
[Swift] 프로그래머스(코딩테스트 연습: LEVEL 1) - 숫자 문자열과 영단어 (0) | 2021.08.19 |
---|---|
[Swift] 프로그래머스(위클리 챌린지 2주차) - 상호 평가 (0) | 2021.08.18 |
[Swift] 프로그래머스(코딩테스트 연습: LEVEL 1) - [1차] 비밀지도 (0) | 2021.08.06 |
[Swift] 프로그래머스(코딩테스트 연습: LEVEL 1) - [1차] 다트 게임 (0) | 2021.08.05 |