설계
반복문 안에서 총 받은 콜라병 수 와 남은 콜라병 수를 계산
남은 콜라병 수로 더 이상 교환이 불가능 할 때 반복문 멈추기
git : 콜라 문제
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/132267
문제 풀이
result 총 콜라를 받은 수
cokeBottle 콜라 교환 후 남은 콜라의 수
위를 계산하여 반복문 진행 중 cokeBottle이 마트에 줘야하는 병 수보다 작으면 더 이상 교환을 못 하기 때문에 반환
import Foundation
// a : 마트에 줘야 하는 수
// b : 마트에서 받는 수
// n : 초기 콜라 개수
func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
var result: Int = 0
var cokeBottle = n
while(true) {
let quotient = cokeBottle / a
let remainder = cokeBottle % a
result += ( quotient * b )
cokeBottle = ( quotient * b ) + remainder
if(cokeBottle < a) {
break
}
}
return result
}
다른 사람 풀이 분석
프로그래머스 - 윤응구 님
func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
return (n > b ? n - b : 0) / (a - b) * b
}
굉장히 심플하나… 원리를 찾으려고 했으나 제 머리로는 이해를 못했습니다
프로그래머스 - GeonWoo Lee , Hoony 님
func solution(_ a:Int, _ b:Int, _ n:Int) -> Int {
var cokeCount = n
var receivedCokeCount = 0
while cokeCount >= a {
receivedCokeCount += cokeCount / a * b
cokeCount = (cokeCount / a * b) + (cokeCount % a)
}
return receivedCokeCount
}
구현 도중 헷갈리지 않게 네이밍을 잘하신거 같습니다.
정리
∙ 문제를 잘 읽고 규칙에 따라 설계 후 구현
∙ 변수가 많아 질 경우 명확한 네이밍을 통해 헷갈리지 않아야 한다!
'알고리즘 & 문제풀이' 카테고리의 다른 글
Queue- 자료구조 (0) | 2023.02.06 |
---|---|
프로그래머스 - L1 소수 찾기 (0) | 2023.02.06 |
코딩 기술 - 문자열 자르기 (0) | 2023.02.04 |
프로그래머스 - L1 크기가 작은 부분 문자열 (0) | 2023.02.04 |
자료구조 (0) | 2023.02.03 |