수정전 ver1
public class Time {
public static void main(String[] args) {
System.out.println(solution("23:55:45","07:03"));
}
public static int cal(String time){
char[] arr = time.toCharArray();
int sum = 0;
sum += Integer.parseInt(arr[0])*10*3600;
sum += Integer.parseInt(arr[1])*3600;
sum += Integer.parseInt(arr[3])*10*60;
sum += Integer.parseInt(arr[4])*60;
sum += Integer.parseInt(arr[6])*10;
sum += Integer.parseInt(arr[7]);
return sum;
}
public static String solution(String time1, String time2){
int result = cal(time1)+cal(time2);
int hour = result/3600;
int min = (result%3600)/60;
int sec = (result%3600)%60;
return hour+":"+min+":"+sec;
}
}
Integer.parseInt()는 String을 정수 타입으로 변환할 때 사용가능하다.
따라서 arr[0]을 String으로 변환해줌.
public static int cal(String time){
char[] arr = time.toCharArray();
int sum = 0;
sum += Integer.parseInt(String.valueOf(arr[0]))*10*3600;
sum += Integer.parseInt(String.valueOf(arr[1]))*3600;
sum += Integer.parseInt(String.valueOf(arr[3]))*10*60;
sum += Integer.parseInt(String.valueOf(arr[4]))*60;
sum += Integer.parseInt(String.valueOf(arr[6]))*10;
sum += Integer.parseInt(String.valueOf(arr[7]));
return sum;
}
완성한 클래스
public class Time {
public static void main(String[] args) {
System.out.println(solution("23:55:45","00:07:03"));
}
// 문자열 -> 초 계산 메소드
public static int cal(String time){
char[] arr = time.toCharArray();
int sum = 0;
sum += Integer.parseInt(String.valueOf(arr[0]))*10*3600;
sum += Integer.parseInt(String.valueOf(arr[1]))*3600;
sum += Integer.parseInt(String.valueOf(arr[3]))*10*60;
sum += Integer.parseInt(String.valueOf(arr[4]))*60;
sum += Integer.parseInt(String.valueOf(arr[6]))*10;
sum += Integer.parseInt(String.valueOf(arr[7]));
return sum;
}
// 시간 더하는 메소드
public static String solution(String time1, String time2){
int result = cal(time1)+cal(time2);
int hour = result/3600;
if(hour>=24){
hour-=24;
}
int min = (result%3600)/60;
int sec = (result%3600)%60;
StringBuilder sb = new StringBuilder();
if(hour<10)
sb.append(0);
sb.append(hour);
sb.append(":");
if(min<10)
sb.append(0);
sb.append(min);
sb.append(":");
if(sec<10)
sb.append(0);
sb.append(sec);
return sb.toString();
}
}
ver2.
아스키코드를 이용하여 char타입에서 int타입으로 변환해줌
아스키코드48 == 숫 0; (49==1; 50==2;....)
public static int cal(String time){
char[] arr = time.toCharArray();
int sum = 0;
sum += (arr[0]-48)*10*3600;
sum += (arr[1]-48)*3600;
sum += (arr[3]-48)*10*60;
sum += (arr[4]-48)*60;
sum += (arr[6]-48)*10;
sum += (arr[7]-48);
return sum;
}
최종버전
public class Time {
public static void main(String[] args) {
System.out.println(solution("23:55:45","00:07:03"));
}
// 문자열 -> 초 계산 메소드 (아스키코드로 char -> int 변환)
public static int cal(String time){
char[] arr = time.toCharArray();
int sum = 0;
sum += (arr[0]-48)*10*3600;
sum += (arr[1]-48)*3600;
sum += (arr[3]-48)*10*60;
sum += (arr[4]-48)*60;
sum += (arr[6]-48)*10;
sum += (arr[7]-48);
return sum;
}
// 시간 더하는 메소드
public static String solution(String time1, String time2){
int result = cal(time1)+cal(time2);
int[] tArr = new int[3];
tArr[0] = result/3600; //hour
if(tArr[0] >=24){
tArr[0] -=24;
}
tArr[1] = (result%3600)/60; //min
tArr[2] = (result%3600)%60; //sec
StringBuilder sb = new StringBuilder();
for(int i = 0; i<tArr.length;i++){
if(tArr[i]<10)
sb.append("0");
sb.append(tArr[i]);
if(i!=tArr.length-1)
sb.append(":");
}
return sb.toString();
}
}
ver 3
split 메소드를 이용해서 ":"을 기준으로 시간 자르기
* Integer.parseInt("07") == 7; 를 수행함. 00 신경 안써도 됨.
public static int cal(String time){
String[] arr = time.split(":");
int sum = Integer.parseInt(arr[0])*3600;
sum += Integer.parseInt(arr[1])*60;
sum += Integer.parseInt(arr[2]);
return sum;
완성된 클래스
/*
※ 손으로 풀고 깃허브에 옮겨 적어주세요
(풀이시간10분~15분 제한)
기준 시간이 존재하고, 추가할 시간을 나타내는 인자가 주어지면 그것을 더해 시간을 나타내는 메소드를 만들어주세요.
예시) 현재 시간은 23:55:45입니다. 이때 00:07:03이 주어지면
00:02:48 로 리턴하는 메소드를 만들어주세요. (단, DecimalFormat,SimpleDateFormat은 사용할 수 없습니다.)
*/
public class Time {
public static void main(String[] args) {
System.out.println(solution("23:55:45","00:07:03"));
}
// 문자열 -> 초 계산 메소드 (아스키코드로 char -> int 변환)
public static int cal(String time){
String[] arr = time.split(":");
int sum = Integer.parseInt(arr[0])*3600;
sum += Integer.parseInt(arr[1])*60;
sum += Integer.parseInt(arr[2]);
return sum;
}
// 시간 더하는 메소드
public static String solution(String time1, String time2){
int result = cal(time1)+cal(time2);
int[] tArr = new int[3];
tArr[0] = result/3600; //hour
if(tArr[0] >=24){
tArr[0] -=24;
}
tArr[1] = (result%3600)/60; //min
tArr[2] = (result%3600)%60; //sec
StringBuilder sb = new StringBuilder();
for(int i = 0; i<tArr.length;i++){
if(tArr[i]<10)
sb.append("0");
sb.append(tArr[i]);
if(i!=tArr.length-1)
sb.append(":");
}
return sb.toString();
}
}
'CS > 알고리즘' 카테고리의 다른 글
게임개발 구현 문제풀이(좌표값 이동) (0) | 2023.11.05 |
---|---|
하노이의 탑 (0) | 2023.10.27 |
재귀함수와 반복문의 차이점 (0) | 2023.10.19 |
소수 구하기 (0) | 2023.10.03 |
중앙값 구하기 (0) | 2023.09.20 |