동전 거슬러주기

오늘의 문제 동전 거슬러주기

요새는 카드를 써서 모르는 사람도 있겠지만 편의점 알바를 해본 나는 알고있다.
손님이 현금을 주면 그 현금액수를 포스기에 입력하면 물건 가격을 제외한 거스름돈을 스스로 계산해준다.

아주 편한 기능이다. 현대 사회를 살아가는 사람들에게는 빠질 수 없는 기능이다.
무엇보다도 돈에 예민한 시대이기 때문에

그렇다면 이렇게 중요한 알고리즘을 잘못 설계한다면 어떻게 될까?
사람들의 돈은 공중분해 될 것이다.

이 중요한 알고리즘을 문제로 한 번 풀어보자 ㅎㅎ

자 문제 나갑니다.

잔돈 세어주기
거스름돈 동전의 단위마다 몇개의 동전이 필요한지 출력하라
동전의 단위[500, 100, 50, 10]

문제를 낼 때마다 강조하는 것이지만 혼자만의 시간을 충분히 가지고 고민하며 풀어보는 것을 권장한다.

HINT.1 : 2000원을 500원으로 나누면 500원의 개수는 4개이다.
HINT.2 : 2000원을 300원으로 나눈 나머지 200은 나머지 거스름돈이 된다.

정답

1.		int money = (int)(Math.random() * 500) * 10;
2.		int[] coin = {500, 100, 50, 10};
		
		System.out.println("거스름돈 : " + money);
		
		
3.		for(int i = 0; i < coin.length; i++){
4.			int count = money / coin[i];
			System.out.println(money);
5.			money = money % coin[i];
			System.out.println(money);
			System.out.println(coin[i] + "원 :" + count + "개");
		}

문제가 이해안가고 답이 이해가 안간다면 내가 쓴 풀이(순서)를 천천히 반복해서 읽어보길 바란다.

  • 순서
  1. 랜덤으로 0 ~ 5000원 사이의 값을 만들어준다. 내게 돈을 줄 사람이 없어서 랜덤으로 한 것이지 누군가 1000원을 주고 물건 값이 300원이라면 int money의 값은 700원이 된다.

  2. 각 동전의 종류를 배열에 담아준다.

  3. 동전의 개수만큼 for문을 돌리고

  4. count에는 money를 coin으로 나눈 개수를 저장한다. ex) 1000/100 = 10개
    또한 동전 종류별 필요 개수가 누적이 되면 안되기 때문에 for문 안에서 만들어 반복 초기화 시킨다.

  5. money에는 coin으로 나눈 나머지 값을 저장한다. ex) 1800/500 = 300원 -> 300/100 = 0원

내가 문제를 올릴 때마다 항상 올리는 가장 중요한 문구 !!

남의 도움이 없이 충분한 혼자만의 시간을 가지고 문제를 풀어보자!!!

좋은 웹페이지 즐겨찾기