#include<stdio.h>
int main() {
int H, M;
int k = 45;
while (1) {
scanf_s("%d" "%d", &H, &M);
if ((H < 0 || H > 23) || (M < 0 || M > 59))
printf(" 유효한 수로 다시 입력하시오. \n ");
else
break;
}
if (H - 1 < 0) {
if (M - k < 0) {
H = 23;
M = 60 + M - k;
}
else if (M - k > 0) {
H = 23;
M = M - k;
}
}
if(H - 1 > 0){
if (M - k < 0) {
H = H - 1;
M = 60 + M - k;
}
else if (M - k > 0) {
H = H - 1;
M = M-k;
}
}
printf("%d, %d", H, M);
}
다른 입력 값들은 대충 맞게 뜨는데
0 0 넣으면 자꾸 22:30으로 떠요.. 어디가 문제인지 모르겠어요...
또, 문제 조건에서 24시간 표현 중 ~~ 이 대목은 어떻게 처리해야 되는건가요?
조건에서 M이 59까지로 입력값 제한해놨는데 ...
ㅜㅜ
창영이 방법은 뭔데 또
입력시간 보다 45분 빨리 알람이 울리게 하는 방법..
아 코딩방식이 아니라 걍 45분 일찍 울리는게 그거냐
ㅇㅇㅇㅇ
int temp = (H*60+M)-45; 이렇게 한다 치면 if로 temp가 음수일 때 24*60을 더한 다음 H에 몫을 저장하고 M에 나머지를 저장하면 되겠죠?
조건대로 테스트한다는거라서 위에 조건문 사실 안해도 됨
밑에 else문 빼먹어서 45분 두번 뺌 ㅋㅋ
디버거 모르면 일단 프린트문으로 여기저기 찍어봐라 방법 알았으면 이프문 두번 통과한거 금방 잡았을듯
0 0 넣엇을때 22라는 숫자가 어디서 나왔을까 생각해봤는뎨 첨 이프문으로 23되고, 두번째 이프문도 통과해서 22 나온것같더라구.. 이유는 모르겟음 ㅋㅋ;;
else if해야 하는데 if만 했으니까 그렇다니까
첫번째 if문 안에서 H M 조작하니까 두번째 if문도 통과하게 상태가 바뀌잖아
헐 아 맞네 지금 해보니까 0 0 -> 23 15 나온다.... 아...
근데 하나만 더 물어봐도 돼? 그 조건 중에 24시간 표현 ~~ 이 대목도 따로 설정해야되는 거야? 분이 59까지로만 받으라고 하는 거 보면 해야되나 싶기도 해서..
아니 백준에서 59분까지만 넣어준다는거지 님보고 입력제한받으라는게 아님 굳이 안넣어도 됨
아,,,,,, 빡대가리라 뭔말인지도 몰랐네 ㄳㄳ..
일단 0,0 이면 그대로 반환하는 조건문을 만드는게 제일 쉬움 님 로직애선 그렇게 안하면 아래꺼에 걸림
아 45분 일찍이면 머지
00:00이면 23:15 나와야되는거잖음
가 아니라 if(H - 1 > 0){ if (M - k < 0) { H = H - 1; M = 60 + M - k; } 이로직
에 걸림
나 저거 왤케 복잡한지 이해가 안됨 if가 너무 많지않냐
int time = H * 60 + M - k; if(time < 0) { time += 24 * 60; } H = time / 60; M = time % 60; print();
23:15분 나오면 그대로 출력하고 넘어가던가 else if로 되는 로직인지 생각하셈 그냥 0시 44분 이하이면 23시에 60분 로직처리하고, 45분이면 그냥 뺴고, 1시 41분 부터는 시에 1시간 뺴버리고, 45분 대여 하는게 제일 편해보이는데
c에서 divide랑 remainder가 어케되는진 모르겠는데 하튼 이렇게 하면 된다아님?
그렇게 처리해도 될듯
time ==0 입력조건이 0~23 아님?
time은 H랑 M 기반으로 분단위 경과값 도출해서 45분 뺀 값임
확실한건 저거 자체는 0시 0분 부터 0시 44분까지 처리가 안될듯
유지보수 자체는 저게 좋을듯 ㅇㅅㅇ
뒤에 -k 가 있구나 ㅈㅁ
엥 왜안됨 0시 20분이라 치면 time값은 -25가 될거고 여기에 24시간 더하면 23시간 35분이잖아
int에 음수도 안들어가나? 그건 아니겠지
잘 돌아가는 로직이네 ㅈㅅㅈㅅ
그래도 글쓴이 로직이 어셈단에서 생각해보면 속도 퍼포먼스가 좋을 수 있음
코테기준으로 보면 모르겠음 난 코테 안본 현직이라 기계적 퍼포먼스는 좀 딸릴듯?
ㅇㅇ.. 저거 자체는 나와봐야 23부터 60이라 큰 차이 없긴함 저거랑 비슷한 로직의 경우에 4kb보다 적되, 이에 가까운 크기가 나오면 퍼모먼스가 나오긴함
4kb 보다 크면 선택인데, 암튼 ㅇㅅㅇ
으아 댓글이 막 달리는데 내가 조건문 파트 읽고 바로 연습해보는거라 이해해보려고 노력하는데 시간이 많이 걸려..
걍 뒤에 있는게 45보다 작으면 시간에서 1빼고 60-k+m하면 됨 ㅋㅋ
일단 내가 ㅈ도 모르는 새끼긴 한데 본문대로면 H = 1 인 조건에서는 작동 안할 것 같아
오 맞네 두번째 h-1>0인 조건에 같거나 크다로 바꿨어 눈썰미 ㅆㅆㅌㅊ!!
엉ㅋㅋ 틀렷다 다른 걸로 바꿔야 되나바 ㅋㅋ