백준 10162 - 전자레인지

Lee Jung-hwan·2023년 5월 9일
0

백준

목록 보기
1/1

백준 10162 - 전자레인지

오늘은 그리디 알고리즘 문제 중 하나인 백준 10162번 전자레인지 문제를 풀어봤다.
문제 링크는 아래와 같다.

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


이 문제의 핵심은 가장 큰 시간부터 입력받은 수에서 뺄셈을 통해 최소 개수를 구하는 방법이다.

만약, 제일 큰 수에서부터 계속 뺄셈을 진행하다 0보다 작아지면 다음 수를 빼보고 이 과정을 반복해서
끝에 0과 같거나 0보다 작을 경우를 판별해 최소 개수를 출력 또는 -1을 출력함으로써 답을 구할 수 있다.

코드는 아래와 같다.
주석을 참고해 문제를 해결해보자.

fun main(args: Array<String>) {
    var (a,b,c) = arrayOf(300,60,10) // 각 시간 저장 변수 a,b,c
    var (count1,count2,count3) = arrayOf(0,0,0) // 각 버튼 클릭 횟수 c1,c2,c3


    var inputNum = readln().toInt() // 시간 입력 받기

    while (true){
        if (inputNum - a >= 0){ // 5분을 뺐을때 0보다 크거나 같으면 c1 ++
            inputNum -= a
            count1++
        }else if(inputNum - b >= 0){ // 1분을 뺐을때 0보다 크거나 같으면 c2++
            inputNum -= b
            count2++
        }else if(inputNum - c >= 0){ // 10초를 뺐을때 0보다 크거나 같으면 c3++
            inputNum -= c
            count3++
        }else{
            if (inputNum == 0){// 올바르게 최소 조작 버튼 값이 구해졌을때
                println("$count1 $count2 $count3") // 최소 조작 버튼 개수 출력
                break
            }else{ // 올바르지 않게 구해졌을때
                println(-1) // -1 출력
                break
            }
        }
    }


}
profile
안녕하세요😁 안드로이드 개발자 이정환 입니다~⭐️

0개의 댓글