본문 바로가기

Projects/백준 문제

백준 2884번 자바 문제 알람시계

반응형

알고리즘 테스트하면서 처음에 조금 애를 먹은 프로그램이다.

 

코딩 때문이라기 보다는 처음에 60진수로 이루어진 시계를 10진수로 옮기는 방법을 어떻게 해야 하나 고민을 하다가,

 

일단 간단하게만 풀었다. 그러다보니, 조금은 복잡한 코딩으로 느껴질 수 있을 것 같고, 이런 식의 땜빵 형식의 알고리즘을 사용하다보니 기술 부채라는 것이 조금씩 쌓여간다고 하는 것이 아닐까 생각되었다.

 

처음에 아래의 주석처리한 부분으로 답안을 내었다가, 자정 이후에 시간에 대한 반례가 생겨 고쳐서 맞았다.

package bj2884;

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
			
		Scanner sc = new Scanner(System.in);
		int H1 = sc.nextInt();
		int M1 = sc.nextInt();
		
		int H2 = ((H1*60 + M1 - 45)/60);
		int M2 = ((H1*60 + M1 - 45)%60);
		
		if (M2 < 0) {
			int H3 = 23; 
			System.out.println(H3 +" " + (60 + M2));
		}
			else {		
		System.out.println(H2 +" "+ M2);
		
	}

}
	
}


//import java.util.Scanner;
//
//
//public class Main {
//
//	public static void main(String[] args) {
//			
//		Scanner sc = new Scanner(System.in);
//		int H1 = sc.nextInt();
//		int M1 = sc.nextInt();
//		
//		int H2 = ((H1*60 + M1 - 45)/60);
//		int M2 = ((H1*60 + M1 - 45)%60);
//		
//		if (M2 < 0) {
//			int H3 = 23; 
//			System.out.println(H3 +" "+ Math.abs(M2));
//		}
//			else {		
//		System.out.println(H2 +" "+ M2);
//		
//	}
//
//}
//	
//}

 

반응형