코딩테스트/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);
}
}
}
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com