프로그래머스 다단계 칫솔 판매 JAVA

sundays·2022년 9월 27일
0

문제

다단계 칫솔 판매

풀이

테스트 케이스는 전부 맞고 제출 케이스 다 틀림
가장 중요한 코드는 아래의 부분이다.

		for (int i = 0; i < seller.length; i++) {
            int money = amount[i] * 100;
            String person = seller[i];
            while (money > 0) {
                int myMoney = (int) Math.round(money * 0.9);
                record.put(person, record.get(person) + myMoney);
                person = hm.get(person);
                if (person.equals("-")) {
                    break;
                }
                money = money - myMoney;
            }
        }

그래서 다른 풀이법을 보았는데 접근 방법은 아예 다르진 않았다. 다만 보통은 / 10을 해준 몫을 부모에게 먼저주고 나머지를 내가 갖는 식으로 처리를 하시는것 같다..

내 코드에서 문제가 되는 부분은 이것인것 같다
10%를 계산한 금액이 1 원 미만인 경우에는 이득을 분배하지 않고 자신이 모두 가집니다.
예를 들면 이렇다
888 이라는 값을 가져올때 나는 0.9 부모에는 0.1을 준다
그럴때 799라는 값을 round해서 버리면 799 라는 값을 주는데 사실 1원 미만의 값으로 나머지가 나오는 부분은 무조건 올림을 해주어야 한다는것이다.
위 코드에서

int myMoney = (int) Math.ceil(money * 0.9);

이 부분만 수정 해주면 된다

전체 코드

전체 코드

profile
develop life

0개의 댓글