코딩테스트/SWExpertAcademy

시각 덧셈 C++(SW Expert Academy)

멍토 2020. 2. 7.

난이도 : D2

문제번호 : 1976

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PttaaAZIDFAUq&categoryId=AV5PttaaAZIDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

 


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

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

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

 

제약사항

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

입력

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

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

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

출력

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

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

예시

입력 출력

3 17 1 39
8 22 5 10
6 53 2 12   
#1 4 56
#2 1 32
#3 9 5

2. 문제풀이

시간 더하기는 시간을 분으로 바꿔준 후 계산해주시면 편합니다.

입력받은 시간을 분으로 바꾼후 더한다음

다시 시간과 분으로 바꾸어 처리했습니다.

예외처리가 하나필요한데

0시가면 12시로 바꾸어 표기해주어야 합니다.

 


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
 
using namespace std;
//D2 1976 시각덧셈
int main(){
    int length;
    cin >> length;
    //테스트 케이스만큼 반복
    for(int i=1; i<=length; i++){
        //시간과 분, 분의합을 위한 변수
        int h1, h2, h3= 0, m1, m2, m3 = 0, sum = 0;
        cin >> h1 >> m1 >> h2 >>m2;
        //모든 시간을 분으로 바꾸어 처리한다.
        sum = h1*60 + m1 + h2*60 + m2;
        //분을 시간으로 바꾼다.
        h3 = (sum/60) %12;
        //남은 분을 계산한다.
        m3 = sum%60;
        //0시 라면 12시로 바꿔주기
        if(!h3) h3 = 12;
        cout << "#" << i << " " <<h3 <<" " <<m3 << endl;
    }
    return 0;
}

댓글

💲 광고입니다.