본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1173 : 30분

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1173 : 30분 전 (자바, JAVA)입니다.

intro

Question

문제 설명

입력

시와 분이 입력된다.
(시의 범위 : 0~ 23)
(분의 범위 : 0~ 59)

출력

입력된 시간의 30분 전의 시간을 출력하시오.

예시

  • 입력 : 12 35
  • 출력 : 12 5

Solution (풀이)

  • 풀이 1 : 메모리 11296, 시간 93
public class Answer1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 시와 분을 입력 받는다.
        int hour = Integer.parseInt(st.nextToken());
        int minutes = Integer.parseInt(st.nextToken());

        if (hour != 0) {
            if (minutes >= 30) {
                // 0시가 아니고 30분이상이면 따로 처리해주어야 할것이 없다.
                bw.append(String.valueOf(hour+" ")).append(String.valueOf(minutes-30));
            } else {
                // 30분 미만이면 시에서 -1 해야한다.
                bw.append(String.valueOf(hour-1+" ")).append(String.valueOf(minutes+30));
            }
        } else {
            if (minutes >= 30) {
                // 시가 0이어도 분이 30분이 넘는다면 따로 처리해줄 것은 없다.
                bw.append(String.valueOf(hour+" ")).append(String.valueOf(minutes-30));
            } else {
                // 시가 0일때 30분 미만이면 전날 23시로 변경되어야 한다.
                bw.append(String.valueOf(23+" ")).append(String.valueOf(minutes+30));
            }
        }

        bw.flush();
        br.close();
        bw.close();
    }
}
  • 풀이 2 : 메모리 11196, 시간 76
public class Answer2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        StringBuilder sb = new StringBuilder();

        // 시와 분을 입력 받는다.
        int hour = Integer.parseInt(st.nextToken());
        int minutes = Integer.parseInt(st.nextToken());

        if (hour != 0) {
            if (minutes >= 30) {
                // 0시가 아니고 30분이상이면 따로 처리해주어야 할것이 없다.
                sb.append(hour+" ").append(minutes-30);
            } else {
                // 30분 미만이면 시에서 -1 해야한다.
                sb.append(hour-1+" ").append(minutes+30);
            }
        } else {
            if (minutes >= 30) {
                // 시가 0이어도 분이 30분이 넘는다면 따로 처리해줄 것은 없다.
                sb.append(hour+" ").append(minutes-30);
            } else {
                // 시가 0일때 30분 미만이면 전날 23시로 변경되어야 한다.
                sb.append(23+" ").append(minutes+30);
            }
        }
        System.out.print(sb);
    }
}

Ranking(순위)

반응형