지구정복

[그리디, 수학, 구현] 백준 - 전자레인지 본문

데이터 엔지니어링 정복/Algorithm

[그리디, 수학, 구현] 백준 - 전자레인지

nooh._.jl 2021. 7. 18. 12:21
728x90
반응형

https://www.acmicpc.net/problem/10162

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net

-문제이해

입력받은 t값에 대해서 300 나누기, 60 나누기, 10 나누기 횟수를 출력하는 문제이다.

예를 들어 t가 370일 경우

370 / 300 = 1

t = 370 - 300*1

의 계산을 해주고 다음 60나누기를 진행한다.

 

70 / 60 = 1

t = 70 - 60*1

 

10 / 10 = 1

t = 10 - 10

 

 

-자바

package greedy;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class BJ10162 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int t;
	private static final int[] arr = {300, 60, 10};
	private static int[] ans = new int[3];

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		t = Integer.parseInt( br.readLine() );
		
		for( int i=0; i<3; i++ ) {
			ans[i] = t/arr[i];
			t -= arr[i]*ans[i];
		}
		if( t!=0 ) {
			bw.write( -1 + "\n" );
		} else {
			for( int i=0; i<3; i++ ) bw.write( ans[i] + " " );
		}
        bw.flush();
		bw.close();
		br.close();
	}
}

 

-파이썬

t = int(input())
arr = [300, 60, 10]
ans = [0] * 3

for i in range( 3 ):
    ans[i] = t//arr[i]
    t -= arr[i]*ans[i]
    
if t!=0:
    print( -1 )
else:
    print( *ans )
728x90
반응형
Comments