본문 바로가기

알고리즘/문제 풀이

Sw Expert Academy 1976. 시각 덧셈

SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

1. 내 코드

난 클래스로 풀었는데, 이건 그냥 for로 푸는 게 더 직관적이고 빠른 듯 하다... 

상위 개념으로 풀어야 잘 푼 거라는 생각을 버리자.

import java.util.Scanner;


class Solution
{
    public static void main(String args[])
    {
        Scanner sc= new Scanner(System.in);
        int T;
        T=sc.nextInt();
        for (int test_case = 1; test_case <= T; test_case++) {
            // 1. 값을 전부 다 받고, 1,3번 / 2,4번 따로 계산
            int H1 = sc.nextInt();
            int M1 = sc.nextInt();
            int H2 = sc.nextInt();
            int M2 = sc.nextInt();
            // 2. 분 먼저 계산하고, 반환 값으로 올림 수와 나머지를 반환
            Minute minute = new Minute(M1, M2);
            // 3. 시 계산 시 input으로 두 시를 나타내는 수와 올림 수 넣기 // 결과 반환
            Hour hour = new Hour(H1,H2, minute.upper);
            int refinedH;
            if(hour.H>12){
                refinedH = hour.H-12;
            }else{
                refinedH = hour.H;
            }
            System.out.printf("#%d %d %d\n",test_case,refinedH, minute.rest);
        }


    }

}

class Minute {
    int plusTotal;
    int upper;
    int rest;

    Minute(int a , int b){
        this.plusTotal = a+ b;
        this.upper = this.plusTotal/60;
        this.rest = this.plusTotal - this.upper*60;
    }
}

class Hour {
    int H;

    public Hour(int a, int b, int upper) {
        this.H = a+b+upper;
    }
}