본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[기출 하] 방 번호 만들기, 거스름 돈

[문제]

방 번호 만들기 - 오리엔테이션에 참여하는 학생들에게 1부터 시작되는 번호표를 나누어 주었다. 이 번호표를 이용하여 학생들이 사용하게 될 방 번호와 방 내부에서의 고유 번호를 만들어주려고 한다. 한 방에 15명의 학생들이 배정되고, 방 내부의 번호는 각자의 번호표 순서대로 결정된다. 학생들에게 줄 번호표를 입력받아 그 학생의 방 번호와 방 내부에서의 번호를 출력하라.

 

거스름 돈 - 마트에서 물건을 현금으로 구매할 경우, 거스름 돈을 가장 적은 화폐 개수로 내어주는 프로그램을 작성하라. 거스름 돈을 지불한 화폐 종류 개수와 총 화폐의 개수를 출력하되, 화폐의 종류는 50000, 10000, 5000, 1000, 500, 100, 50, 10원 8종이다.

 

[코드]

- 방 번호 만들기

#include <iostream>
using namespace std;
int main() {
	int room_n;//방 번호
	int in_n; //방 안에서의 번호
	int n;
	cin>>n;
	
	room_n = (n-1) / 15 + 1;
	in_n = (n-1) % 15 + 1;
	
	cout << room_n << " " << in_n;
	return 0;
}

 

- 거스름 돈

#include <iostream>
using namespace std;

void solution(int m, int n) {
	  // 화폐 종류 개수, 총 화폐 개수 출력
	int type[8] = {50000, 10000, 5000, 1000, 500, 100, 50, 10};
	int total = 0;
	int type_num = 0;
	int rest = m-n;
	for(int i=0; i<8; i++){
		if(type[i] <= rest){
			type_num++;
			total += rest / type[i];
			rest = rest % type[i];
		}
	}
	
	cout << type_num << " " << total;
	return;
}

int main() {
	int m, n;
	cin >> m >> n;
	
	solution(m, n);
	
	return 0;
}