본문 바로가기
알고리즘/코딩테스트

[백준/알고리즘]2884 알람시계문제, 나는 전부 m으로 바꾸고 싶단 말이다!

by dokii 2021. 3. 8.
728x90
반응형

처음 생각한 접근법.

1. 시간(h)을 전부 분(m)으로 바꾸어 하나로 합친다.

2. 거기서 45분을 뺀다.

3. 60으로 나눈뒤 몫을 시간으로, 나머지를 분으로 출력한다.

 

 

그런데?

계속 오답이 뜬다...

내가 생각한 특별한 조건은 시간이 0시 였을때 이므로,

조건식으로 H==0을 줬으나 계속 오답이라고 나왔다.

왜 오답 이죠??

 

결국 이렇게 바꿨다.

백준이 정답으로 인정한 코드는 다음과 같다.

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();
		
		int time = H*60+M-45;
		
		if(time<0) {
			System.out.println(23+" "+(time+60));
		}else {
			System.out.println(time/60+" "+time%60);
		}

	}

}

 

 

(+21.03.08 내용추가)

백준 질문게시판에 내가 처음 짠 코드를 올렸고, 다른 사용자분이 반례를 들어주셨다.

반례는 다음과 같다.

0 45 를 입력할 경우, 

0 0이 출력되어야하는데 23 0 으로 출력되는것이다.

24시는 0 으로 출력되어야하는데, 그 부분을 간과한것이다.

 

 

728x90
반응형

댓글