반응형

백준 2884번 문제


풀이

문제가 어쩌구 저쩌구 엄청 긴데 몇 시, 몇 분을 입력하면 입력한 시간에서 45분을 뺀 뒤 출력해주라는 문제이다.

하루는 24시간이고 1시간은 60분이라는 것을 염두에 두고 문제를 풀면 되겠다.

이게 왜 중요하냐면 우리가 평소에 사용하는 십진법과 받아내림이 다르기 때문에 컴퓨터한테 발생할 수 있는 모든 경우의 수에 대한 대처법을 알려줘야한다.

 

45분을 빼는 계산에서 발생할 수 있는 경우의 수는 이렇다.

  • M(분)이 45이상일때  : M(분)에서 45를 빼주기만 하면 된다.
  • M(분)이 45미만일때 : H(시)에서 1을 빼고 M(분)에 15를 더해주면 된다.(1시간은 60분)
  • M(분)이 45미만인데, H(시)가 0일때 : H(시)가 0일 경우 23을 출력해주고 M(분)에 15를 더해준다.

풀이코드
if와 else를 사용해 조건에 맞게 답을 출력해주면 된다.


      
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int H = sc.nextInt();
int M = sc.nextInt();
sc.close();
if(H==0 && M<45){
System.out.print(23+" "+(M+15));
} else if(M<45){
System.out.print((H-1)+" "+(M+15));
} else{
System.out.print(H+" "+(M-45));
}
}
}

느낀점

이 문제같은 경우는 경우의 수가 얼마 되지 않아서 다행이지만

모든 경우의 수라는 말은 얼마나 무서운가. 내가 닥터스트레인지도 아니고.

닥터 스트레인지

 

반응형
그레이트현