이렇게 문제를 풀었다는 것이지 이 코드가 무조건적으로 좋다!! 라는 것은 아니니 참고만 하세용
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int cook = Integer.parseInt(br.readLine());
int endTime = (m + cook) % 60;
int endHour = h + ((m + cook) / 60);
if (endHour > 23) {
endHour = endHour % 24;
bw.write(endHour + " " + endTime);
} else {
bw.write(endHour + " " + endTime);
}
bw.close();
조건식을 사용해서 문제를 풀었다.
먼저 h = 시간, m = 분, cook = 요리시간
으로 잡았고
endTime = 끝나는 분
...? 요리 시간이 분으로 주어지기 때문에 둘을 더해서 60으로 나눈 나머지를 담았다.
-> 그러면 40+30 => 10분이 되겠지?
endHour = 끝나는 시간
-> 위와 비슷하게 이번엔 나눈 몫을 구해서 더해주었다.
그러면 50+60 => 1시간 50분 => 1시간을 endHour에 더하는 것.
이렇게 하고 if문
으로 24시일때 다시 0으로 돌아오기 위해서 endHour % 24
를 해주었고
else
로 그렇지 않을때는 그냥 출력하게 코드를 작성했다.
이렇게만 보면 아주 간단한 문제다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int cook = Integer.parseInt(br.readLine());
int endTime = m + cook;
int endHour = h + (endTime / 60);
if (endTime >= 60) {
endTime = endTime % 60;
if (endHour > 23) {
endHour = endHour % 24;
bw.write(endHour + " " + endTime);
}
bw.write(endHour + " " + endTime);
} else {
bw.write(endHour + " " + endTime);
}
bw.close();
일단 전체 코드작성.
출력은????
23 45
25
0 100 10
?????????? 아니 무야 왜 100????
엥??????????? 왜 3 숫자나 나와!!!!!
라고 개 빡쳐서 내가 코드를 뭘 잘못 작성했지? 했는데
if (endTime >= 60) {
endTime = endTime % 60;
if (endHour > 23) {
endHour = endHour % 24;
bw.write(endHour + " " + endTime);
}
bw.write(endHour + " " + endTime);
}
이 부분을 잘 살펴보면....
if (endHour > 23) {
endHour = endHour % 24;
bw.write(endHour + " " + endTime);
}
이렇게 bw.write()
가 한번 더 있어서
0 10 / 0 10이 붙어서 나온것... 사실 정답은 나오는데 출력을 두번해서 그런것이었음...
나는 그것도 모르고 삽질을 주구장창..... 이번것도 역시 기초가 부족해서 나온 실수였다...
if를 걸었으면 임마!! bw.write()
가 중복되는디! 쓰고 나올줄 알았냐?????
그냥 2번 if문 안에 bw.write()
를 없애면 됨;;;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int cook = Integer.parseInt(br.readLine());
int endTime = m + cook;
int endHour = h + (endTime / 60);
if (endTime >= 60) {
endTime = endTime % 60;
if (endHour > 23) {
endHour = endHour % 24;
}
bw.write(endHour + " " + endTime);
} else {
bw.write(endHour + " " + endTime);
}
bw.close();
이렇게... 그냥 endHour
를 수정해주기만 하고 if는 끝내면 되는 거였다... 에효.... 쫌!!!
근데 그걸 모르고 왜 안되냐고 코드만 겁나 수정했네... 아휴... 그래도 맨 위에 올린 정답코드랑 비교하면 확실히 if문을 덜 쓰게 되니 코드가 더 깔끔해 보인다.
다른 사람들의 코드를 보면 if를 쓰지 않고도 문제를 해결 하는 걸 볼 수 있다...!!
더 열심히 공부하자~~
다 쓰고 한 번더 읽으면서 생각해보니 바로 위에 if 문을 사용하지 않고 해결하는 것까지 생각났다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int cook = Integer.parseInt(br.readLine());
int endTime = (m + cook) % 60;
int endHour = (h + ((m + cook) / 60)) % 24;
bw.write(endHour + " " + endTime);
bw.close();
짠!! if로 하던 %24
를 그냥 바로 때려버리면 되는것..!!
누군가에겐 뭐야 당연한 소리 아냐?
라고 할 수 있겠으나 나는 깜짝 놀래버려따!!! 으흐흐
그냥 걸음마떼고 있는 단계니까 태클걸지말고 보행기 한번 밀어주고 가십셔
감사합니다 땡큐.