- 시니어한테 물어볼거 리스트업 (~ 목요일 오전까지 정리햇 매니저한테 넘기기)
- (완료)오전 알고리즘 문제 풀기
- (완료) 노드 교과서 읽기
https://school.programmers.co.kr/learn/courses/30/lessons/132267
function solution(a, b, n) {
let countCola = 0;
while (n >= a) {
let emptyCola = (n - (n % a));
let changeCola = Math.floor(emptyCola * (b/a));
countCola += changeCola;
n = n - emptyCola + changeCola
}
return countCola;
}
위의 코드를 아무리해도 테스트 케이스 중 2개가 자꾸 실패가 떴다.

테스트 케이스를 돌려봤는데도 잘 돌아갔다. 대체 어떤 테스트 케이스란 말인가...

n의 수도 늘려서 테스트 케이스를 하던 중 사람들의 코드와 비교하는데 자꾸 b에 대한 언급이 나왔다. 사람들이 b를 자꾸 빼먹는다는 것이었다. 나는 빼먹지 않았으니 걱정할건 없다고 생각했는데 혹시...?! 라는 생각이 들었다.

혹시 *(b/a)의 연산 부분이 잘못된걸까?! 싶어서 아래와 같이 바꿔봤다.

그랬더니 놀랍게도 ...! 통과...!

(b/a) 소수 혹은 정수를 emptyCola에 곱하는거랑 a를 나누고 소수부분을 지운 정수에 b를 곱하는거랑 값이 당연히 같을 수는 없는 것!
<성공한 코드>
function solution(a, b, n) { let countCola = 0; while (n >= a) { let emptyCola = (n - (n % a)); let changeCola = Math.floor(emptyCola / a) * b; countCola += changeCola; n = n - emptyCola + changeCola } return countCola; }
N개의 최대공약수 구하는 방법
https://kimhaksung.tistory.com/entry/python3GCD