본문 바로가기

Algorithm/BOJ

[C/백준]2525번

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void) {

  int A,B,C;
  int totalMin;

  scanf("%d %d",&A,&B);  // 현재 시각 A시 B분 입력받기
  if(A<0||A>23||B<0||B>59){
    printf("현재 시각 입력이 잘못되었습니다.");
    return 0;
  }	//입력조건 확인
  
  scanf("%d",&C);  // 요리하는데 필요한 시간 C 입력받기
  if(C<0||C>1000){
    printf("요리하는데 필요한 시간 입력이 잘못되었습니다.");
    return 0;
  } //입력조건 확인
  
  
  // 계산
  totalMin = A*60+B+C;

  if(totalMin>=1440)
    totalMin-=1440;

  A=totalMin/60;
  B=totalMin%60;

// 출력
  printf("%d %d",A,B);
  
  return 0;
}

 

이 문제를 보고 든 생각의 흐름

1) B+C 해서 분을 시로 바꾸고 다시 A랑 더해서 24가 넘는지 확인해보자.

   : 인간친화적인 사고방식이지. 기계가 이렇게 하기에는 너무 복잡하다. 연산이 많이 필요하고 오히려 더 복잡해지는 것 같다.

 

2) A시 B분을 모두 분으로 변환하여 계산 기준을 '분'으로 맞추자. 그리곡 1440분(24시)을 넘는지 안 넘는지 한 번만 판단하자. 시와 분은 60으로 나눈 몫과 나머지다.

   : 이게 훨씬 빠르군.

 

 

 

지난 번과 다른 점

백준 푸는데 이것까지 해야하나 싶지만...

요즘 서버공부를 하고 있는데 뭐든지 다 예외처리해서 오류를 잡아내더라. 그래서 이 문제도 예외처리를 해주었다. 아주 쬐끔 더 성장한 기분.ㅎ

 

 


 

교수님께 상담을 받으러 갔다. 교수님, 컴공 적성에 안 맞는 것 같습니다. 3학년인데 아직도 코딩을 할 줄 모르겠습니다.

교수님은 그러셨다. 익숙해지는 수밖에 없다. 엔지니어의 길을 가지 않더라도, 어느 일을 하더라고, 코딩은 필요할거라고. 알고리즘은 많이 풀다보면 익숙해지고 패턴이 보이니까 매일 꾸준히 조금씩이라도 풀어보고 접해보라고. 익숙해지는 방법밖에는 없다고. 그리고 희망을 가지라고. 할 수 있다고. 의지가 충분히 있어보인다고 :)

 

다시 백준 열심히 풀어보겠다. 내가 생각하고 있는 코딩은 거창하고 엄청난 무언가를 만드는 마술사 같은 것인데.

이런 기초적인 백준 푼다고 당장 흑마법사로 진급하는 건 아니지만, 언젠가 그럴 수도..?

어쩌면 거창하고 엄청나 '보이는' 프로그램이 사실 알고보면 탄탄하고 간단한 기초에서부터 만들어지는 것일지도..?