[구름톤 챌린지 3주 차 학습 일기] 11일차 미션 문제 11. 통증 (2) (java)
Problem Solving/goorm

[구름톤 챌린지 3주 차 학습 일기] 11일차 미션 문제 11. 통증 (2) (java)

728x90

https://level.goorm.io/exam/195693/%ED%86%B5%EC%A6%9D-2/quiz/1

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io


728x90

 

내 생각

우선 무조건 수가 큰 B로 N을 나눌 수 있을 만큼 나누고,

만약 N이 0이 아니라면 B의 개수를 1개씩 줄이며 A의 개수를 늘리고 0으로 나누어 떨어지는지 확인했다.


import java.io.*;
import java.util.*;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		// N 입력
		int N = Integer.parseInt(br.readLine());
		
		// A, B 입력
		st = new StringTokenizer(br.readLine());
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		// 더 큰 치료제인 B를 먼저 사용할 수 있을 만큼 사용한다고 가정
		int numB = N / B;
		
		// N이 0이 될 때까지 B의 치료제 개수를 줄이고 A의 개수를 늘려준다.
		int result = 0;
		while(numB >= 0) {
			if((N - (B * numB)) % A == 0) {
				result = ((N - (B * numB)) / A) + numB;
				break;
			}
			numB--;
		}
		
		// 통증 수치를 0으로 만들 수 없는 경우에는 -1 출력
		result = result == 0 ? -1 : result;
		
		// 출력
		System.out.println(result);
	}
}
728x90