[C/C++] BOJ(백준) 10162 "전자레인지" 문제 풀이

    반응형

     

    # 문제 정보

     

    # 문제 분석

    가장 대표적인 그리디 문제인 "거스름돈"과 거의 같은 문제이다.

    주의 해야할 점이라면, 눌러야 할 버튼의 총 횟수를 출력하는 것이 아닌 각 버튼의 경우의 수를 출력해야 한다는 것과, 189초 와 같이 A(300초) B(60초) C(10초) 버튼을 이용해 딱 맞아 떨어지게 누르지 못하는 케이스는 "-1"을 출력해야 한다는 것만 조심하면 된다.

     

    # 소스 코드 _ 1

    #include <iostream>
    using namespace std;
    
    int T; // 요리시간(1<=T<=10000) 
    int ary[3] = {0 , 0 , 0}; // 눌러야할 각 최소 버튼의 수 
    int temp; 
    
    int main()
    {
    	ios_base::sync_with_stdio(false);
    	cin.tie(NULL); 
    	
    	cin >> T;
    	
    	temp = T / 300;
    	ary[0] += temp;
    	T = T - (temp*300);
    		
    	temp = T / 60 ;
    	ary[1] += temp;
    	T = T - (60*temp);
    				
    	temp = T / 10;
    	ary[2] += temp;
    	T = T - (10*temp);
    	
    	if (T != 0)
    		cout << -1;
    		
    	else
    		cout << ary[0] << " " << ary[1] << " " << ary[2];	
    	
    	return 0;
    }

     

    # 소스 코드 _ 2

    #include <iostream>
    using namespace std;
    int n;
    
    int main() 
    {
    	cin >> n;
    	
    	if (n % 10 != 0) 
    		cout << -1;
    	else 
    		cout << n / 300 << " " << (n % 300) / 60 << " " << (n % 60) / 10; 
    		
    	return 0;
    }

    반응형

    댓글

    Designed by JB FACTORY