[백준] 2525번 : 오븐 시계 (2단계) (C++)

2024. 1. 8. 10:19· 프로그래밍/코딩 테스트 연습
  • https://www.acmicpc.net/problem/2525
 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 


 

문제

 

 

 


 

 

해석

 

https://whitecode2718.tistory.com/61?category=1137840

 

[백준] 2884번 : 알람 시계 (2단계) (C++)

https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있

whitecode2718.tistory.com

 

알람 시계 문제에서 시간을 받는 범위가 늘어나고 빼는 게 아닌 더해지는 시간이 된 것뿐입니다. 

 

만약 이 문제를 입력받는 데이터에 따라 시간을 더한다면 조건은 매우 복잡해질 겁니다. (더해진 분이 60의 배수만큼 시간을 더하면서 이때 시간이 24시인지를 생각해야 할 겁니다.)

 

때문에 이 문제도 입력받는 시간을 분단위로 전부 바꾼 후 분단위로 더하고 60을 나눈 몫과 나머지로 출력할 시간과 분으로 분리하면 됩니다.

 

 

 

 

 풀이

 

#include<iostream>
using namespace std;

int main(){
    int hour,min,turn,time;
    cin >> hour >> min;
    cin >> turn;
    
    time = hour * 60 + min + turn;
    
    hour = time / 60;
    min = time % 60;
    
    if(hour == 24)
        hour =0;
    cout << hour << " " << min << endl;
    
}

 

처음에 작성한 코드입니다. turn을 분단위로 받고 time(입력받은 데이터를 분단위로 바꿔 저장한 변수)에 더해  time을 다시 시간과 분으로 바꿔 출력하는 코드입니다.

 

알람 시계문제에서는 hour_re, min_re처럼 변환된 데이터를 저장할 변수를 따로 지정했지만, 최대한 변수를 적게 사용하려고 작성된 코드입니다. 당연히 hour_re, min_re를 사용해도 됩니다.

 

하지만 틀렸다고 나옵니다. 이유를 알 수 없어 질문 게시판의 반례들을 대입해서 문제를 찾았습니다.

 

출력해야 하는 시간이 24시간이 넘어가는 경우를 생각하지 못한 겁니다. 예를 들어 현재 시각이 23시 20분이고 더해지는 시간이 40분 이상이라면 출력은 24시 ~ 분일 겁니다. 즉, 24시가 넘어가는 경우가 발생합니다.

 

이 문제를 해결하려면 출력하는 코드가 24시가 넘는 다면 24를 빼면 됩니다. 24시를 0시라고 했기 때문입니다.

 

최종적으로 코드는 다음과 같습니다.

#include<iostream>
using namespace std;

int main() {
    int hour, min, turn, time;
    cin >> hour >> min;
    cin >> turn;
   
    time = hour * 60 + min + turn;

    hour = time / 60;
    min = time % 60;

    while (1) {
        if (hour < 24)
            break;
        hour -= 24;
    }

    cout << hour << " " << min << endl;

}

 

 

 


 

 

정리

 

알람 시계와 같은 문제라고 생각하고 코드를 별생각 없이 작성해 특수한 상황을 놓쳤습니다.

 

시간에 대한 기준을 세웠으니 시간에 대한 출력을 생각했거나, 출력 조건을 제대로 살펴봤다면 실수하지 않았을 텐데 이런 부분에 연습이 더 필요할 것 같습니다.

 

 

 

'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글

[백준] 2739번 : 구구단 (3단계) (C++)  (1) 2024.01.09
[백준] 2480번 : 주사위 세개 (2단계) (C++)  (0) 2024.01.08
[백준] 2884번 : 알람 시계 (2단계) (C++)  (0) 2024.01.08
[백준] 14681번 : 사분면 고르기 (2단계) (C++)  (1) 2024.01.08
[백준] 2753번 : 윤년 (2단계) (C++)  (0) 2024.01.07
'프로그래밍/코딩 테스트 연습' 카테고리의 다른 글
  • [백준] 2739번 : 구구단 (3단계) (C++)
  • [백준] 2480번 : 주사위 세개 (2단계) (C++)
  • [백준] 2884번 : 알람 시계 (2단계) (C++)
  • [백준] 14681번 : 사분면 고르기 (2단계) (C++)
w_w
w_w
데이터 사이언스가 목표인 학생입니다. / 공부한 내용을 간단히 정리하는 블로그입니다. / 비공개 게시글은 저작권 보호를 위해 개인 소장 용도로만 사용합니다.
w_w
공부용
w_w
전체
오늘
어제
  • 전체 글 (78)
    • 대표글 (4)
    • 프로그래밍 (71)
      • C++ (8)
      • Python (1)
      • 알고리즘 (1)
      • 코딩 테스트 연습 (61)
      • 게임 (0)
    • 데이터베이스 (0)
      • 데이터 분석 및 시각화 (0)
      • 머신 러닝 (0)
    • 공학 (2)
      • 수학 기본 개념 (2)
    • 정보 (1)
      • AICE (1)
      • Excel (0)
      • Access (0)
      • kaggle (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 머신러닝
  • 데이터 분석
  • K-최근접 이웃
  • Matplotlib
  • c++
  • 데이터 시각화
  • 머신 러닝
  • 연산자
  • python
  • 알고리즘
  • 프로그래밍 언어
  • 그래프 저장하기
  • 자료구조
  • 백준
  • 엑셀 파일 통합
  • 바이너리I/O
  • Excel
  • K-평균 군집화
  • 그래프 꾸미기
  • 연산자 중복
  • 바이너리 파일
  • 텍스트I/O
  • C언어 링킹
  • 객체
  • 데이터 연산
  • IT
  • 연결 리스트
  • 클래스
  • 데이터 분석 패키지
  • pandas

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
w_w
[백준] 2525번 : 오븐 시계 (2단계) (C++)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.