
이번 문제는 시간에 관한 문제이다.
시는 24시가 최대이고 분은 59분이 최대이다.
또한 두 값은 절대 -가 될 수 없다.
시는 h로 분은 m으로 변수를 지정한다.
m의 값에 -45를 해본 후 m의 값이 -로 떨어진다 하면 h-1 을 해주고 맨 처음 입력받은 m의 값에 (m-45) 한 값을 더해준다.
처음 작성했던 코드는 이것이다.
#include <stdio.h>
int main(){
int h,m;
scanf("%d %d",&h,&m);
if((m-45)<0){
h-=h;
m=60+(m-45);
}
else
m=m-45;
printf("%d %d",h,m);
return 0;
}
/*본 코드는 틀린 코드이다.*/
틀린 이유는
1. h-=h 는 다른 연산자이다. ( 이 이유는 세번째로 코드를 작성하고 틀린걸 알았다. )
2. 만약 h의 값이 0이라면 h의 값은 -로 떨어진다.
h의 값이 0인 경우엔 h의 값이 -1이 아닌 23이 되게 설정한다.
2번째로 작성한 코드이다.
#include <stdio.h>
int main(){
int h,m;
scanf("%d %d",&h,&m);
if((m-45)<0){
if(h=0)
h=23;
else
h=h-1;
m=60+(m-45);
}
else
m=m-45;
printf("%d %d",h,m);
return 0;
}
/* 본 코드는 틀린코드이다 */
처음엔 여기서 틀린 이유를 찾지 못했다 (C를 배워놓고 진짜 오랫동안 안 했나보다...)
틀린 이유는 6번째 줄의 if(h=0) 때문이다.
h=0은 h의 값에 0을 대입한다는 뜻이다.
h가 0과 같다면의 의미로 작성하려면 h==0 으로 작성했어야 한다.
틀린 이유
1. h가 0일 경우 h-1를 하면 값이 -가 된다.
3번째로 작성한 코드이다.
#include <stdio.h>
int main() {
int h, m;
scanf("%d %d", &h, &m);
if ((m - 45) < 0) {
if (h == 0)
h = 23;
else
h -= h;
m = 60 + (m - 45);
}
else
m = m - 45;
printf("%d %d", h, m);
return 0;
}
/*본 코드는 틀린 코드이다*/
사실 h = h-1로 썼다가 h=h-1를 대체할 수 있는 코드를 배웠던 것 같아서 써먹어보려고 했다.
그런데 h-=1 는 아니었던 것이다.
h = --h 였던 것.
자꾸 없는 언어 창조하지말자...
제발 있는 언어 쓰자...
그래서 최종적으로 수정해서 제출한 코드가
#include <stdio.h>
int main() {
int h, m;
scanf("%d %d", &h, &m);
if ((m - 45) < 0) {
if (h == 0)
h = 23;
else
h = h-1;
m = 60 + (m - 45);
}
else
m = m - 45;
printf("%d %d", h, m);
return 0;
}
이 코드이다.
'▶ 언어 > 백준' 카테고리의 다른 글
[C언어] 백준 8393번 오답노트 (0) | 2021.05.30 |
---|---|
[C언어] 백준 2739번 오답노트 (0) | 2021.05.30 |
[C언어] 백준 9498번 오답노트 (0) | 2021.05.26 |
[C언어] 백준 10171번 오답노트 (0) | 2021.05.25 |
[C언어] 백준 2588번 오답노트 (0) | 2021.05.25 |