Human Readable Time, CodeWars Kata
Write a function, which takes a non-negative integer (seconds) as input and returns the time in a human-readable format (
HH:MM:SS
)
HH
= hours, padded to 2 digits, range: 00 - 99MM
= minutes, padded to 2 digits, range: 00 - 59SS
= seconds, padded to 2 digits, range: 00 - 59The maximum time never exceeds 359999 (
99:59:59
)You can find some examples in the test fixtures.
0 또는 양의 정수를 입력받아 사람이 읽기 편한 시간 형태로 출력하는 문제입니다. 99:59:59
를 초과하는 값은 친절하게 들어오지 않습니다.
My Solution
저는 시, 분, 초를 각각 계산해서 String.format()
에 대응했습니다. 먼저 시간을 계산해 줍니다. 60*60
으로 나눈 몫이 시간이 되겠죠. 그다음 시간에 역으로 60*60
을 곱한 값을 입력값 seconds
에서 뺀 다음 남은 값을 다시 60
으로 나눠 분을 구해줍니다. 같은 방법으로 초도 구해주고 포맷팅 하면 완료입니다.
포맷에서는 항상 두자리 수로 시, 분, 초가 표현되어야 하기 때문에 %02d:%02d:%02d
를 사용했습니다.
package com.codewars;
public class HumanReadableTime {
public static String makeReadable(int seconds) {
int hh = seconds / (60 * 60);
int mm = (seconds - (60 * 60 * hh)) / (60);
int ss = seconds - (60 * 60 * hh) - (60 * mm);
return String.format("%02d:%02d:%02d", hh, mm, ss);
}
}
Best Practice
아래 코드와 같이 나머지 연산을 활용하면 분, 초를 더 쉽게 구할 수 있습니다. 분과 초는 0~59 범위를
가지기 때문에 %60
으로 간단하게 구할 수 있네요.
public class HumanReadableTime {
public static String makeReadable(int seconds) {
return String.format("%02d:%02d:%02d", seconds / 3600, (seconds / 60) % 60, seconds % 60);
}
}
728x90
'IT Contents > 프로그래밍 팁' 카테고리의 다른 글
Convert string to camel case, CodeWars Kata 자바 솔루션 (0) | 2021.04.07 |
---|---|
Number of trailing zeros of N!, CodeWars Kata 자바 솔루션 (0) | 2021.04.06 |
Create Phone Number, CodeWars Kata 자바 솔루션 (0) | 2021.04.04 |
Find the missing letter, CodeWars Kata 자바 솔루션 (0) | 2021.04.03 |
Count the smiley faces! CodeWars Kata 자바 솔루션 (0) | 2021.04.01 |
최근댓글