CodeWars 여든 두 번째 문제
Updated:
Human readable duration format
import java.util.ArrayList;
import java.util.List;
public class TimeFormatter {
public static String formatDuration(int seconds) {
System.out.println(seconds);
if(seconds == 0) {
return "now";
}
return timeFormat(timeInputList(timeCalculate(seconds)));
}
private static String timeFormat(List<String> timeInputList) {
String result = timeInputList.get(0);
for(int i = 1; i < timeInputList.size(); i++) {
result += (i < timeInputList.size()-1 ? ", " : " and ") + timeInputList.get(i);
}
return result;
}
private static List<String> timeInputList(int[] time) {
String[] timeComponents = {" year", " day", " hour", " minute", " second"};
List<String> timeList = new ArrayList<String>();
for(int i = 0; i < time.length; i++) {
if(time[i] > 0) {
timeList.add(time[i] + timeComponents[i] + (time[i] == 1 ? "" : "s"));
}
}
return timeList;
}
private static int[] timeCalculate(int seconds) {
int[] time = new int[5];
time[4] = seconds % 60;
time[3] = (seconds / 60 ) % 60;
time[2] = (seconds / 3600) % 24;
time[1] = ((seconds / 3600) / 24) % 365;
time[0] = ((seconds / 3600) / 24) / 365;
return time;
}
}
- 어제 오늘 연속으로 4Kyu를 풀어보았다.
- 년, 일, 시간, 분, 초로 나누는 공식은 지금까지 공부하면서 익힌 내용으로 쉽게 풀 수 있었다.
- 그러나 콤마(,)와 and 처리가 까다로웠다.
- 다 작성하고 나서 Best 코드는 신박한게 있을 줄 알았는데
- 크게 차이는 없었다.