반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1970번 쉬운 거스름돈 자바(Java)

1) 난이도 : D2

 

2) 문제번호 : 1970번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemSolver.do?contestProbId=AV5PsIl6AXIDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

2. 문제

우리나라 화폐 ‘원’은 금액이 높은 돈을 우선적으로 계산할 때 돈의 개수가 가장 최소가 된다.

S마켓에서 사용하는 돈의 종류는 다음과 같다.
50,000 원
10,000 원
5,000 원
1,000 원
500 원
100 원
50 원
10 원

S마켓에서 손님에게 거슬러 주어야 할 금액 N이 입력되면 돈의 최소 개수로 거슬러 주기 위하여 각 종류의 돈이 몇 개씩 필요한지 출력하라.


[예제]

N이 32850일 경우,
50,000 원 : 0개
10,000 원 : 3개
5,000 원 : 0개
1,000 원 : 2개
500 원 : 1개
100 원 : 3개
50 원 : 1개
10 원 : 0개

 

3. 제약사항

- N은 10이상 1,000,000이하의 정수이다. (10 ≤ N ≤ 1,000,000)

- N의 마지막 자릿수는 항상 0이다. (ex : 32850)

 

4. 입력

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스에는 N이 주어진다.

 

5. 출력

각 줄은 '#t'로 시작하고, 다음줄에 각 돈의 종류마다 필요한 개수를 빈칸을 사이에 두고 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

6. 풀이

- 나눈 몫만큼 곱해서 N에서 뺀다.

7. 소스 코드

import java.util.*;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt(); // 테스트 케이스의 개수
		for(int tc=1;tc<=T;tc++) {
			int N = sc.nextInt(); //금액
			int a = 0; //50000
			int b = 0; //10000
			int c = 0; //5000
			int d = 0; //1000
			int e = 0; //500
			int f = 0; //100
			int g = 0; //50
			int h = 0; //10
			
				a = N/50000;
				N -= 50000*a;
				b = N/10000;
				N -= 10000*b;
				c = N/5000;
				N -= 5000*c;
				d = N/1000;
				N -= 1000*d;
				e = N/500;
				N -= 500*e;
				f = N/100;
				N -= 100*f;
				g = N/50;
				N -= 50*g;
				h = N/10;
				N -= 10*h;
			System.out.printf("#%d\n",tc);
			System.out.printf("%d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h);
		}
	}
}

	

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기