코딩테스트/SWEA

[SWEA] (D2) 1976. 시각 덧셈

l0o0lv(한동근) 2024. 11. 1. 00:26

시 분으로 이루어진 시각을 2개 입력 받아, 더한 값을 시 분으로 출력하는 프로그램을 작성하라.

 

(시각은 12시간제로 표시한다. 즉, 시가 가질 수 있는 값은 1시부터 12시이다.)

 

[제약 사항]

시는 1 이상 12 이하의 정수이다. 분은 0 이상 59 이하의 정수이다.

 

 

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

 

각 테스트 케이스의 첫 번째 줄에는 4개의 수가 주어진다.

 

첫 번째 수가 시를 나타내고 두 번째 수가 분을 나타낸다. 그 다음 같은 형식으로 두 번째 시각이 주어진다.

 

[출력]

출력의 각 줄은 '#t'로 시작하고 공백을 한 칸 둔 다음, 시를 출력하고 공백을 한 칸 둔 다음 분을 출력한다.

 

(t 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

[풀이]

분을 합한 것이 59보다 크다면 시간에 1을 더해주고 분은 60을 빼준다.

 

시간이 24라면 자정 12시니 hour 을 12시로 변경한다.

 

그 외 시간이 12를 넘어가면, 12를 나눈 나머지를 hour 으로 변경한다.

import java.util.*;
import java.lang.*;
import java.io.*;
 
class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int testCase = Integer.parseInt(br.readLine());
        StringTokenizer st;
         
        for(int i = 1 ; i <= testCase ; i++){
            st = new StringTokenizer(br.readLine());
            List<Integer> list = new ArrayList<>();
             
            while(st.hasMoreTokens())
                list.add(Integer.parseInt(st.nextToken()));
 
            int hour = list.get(0) + list.get(2);
            int minute = list.get(1) + list.get(3);
 
            if(minute > 59){
                minute -= 60;
                hour += 1;
            }
 
            if(hour == 24)
                hour = 12;
            else if(hour > 12)
                hour %= 12;
 
            System.out.println("#" + i + " " + hour + " " + minute);
        }
    }
}

 

문제 출처 :https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PttaaAZIDFAUq&categoryId=AV5PttaaAZIDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2

 

SW Expert Academy

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

swexpertacademy.com