https://www.acmicpc.net/problem/13223
13223๋ฒ: ์๊ธ ํญํ
์ฒซ์งธ ์ค์๋ ํ์ฌ ์๊ฐ์ด hh:mm:ss๋ก ์ฃผ์ด์ง๋ค. ์๊ฐ์ ๊ฒฝ์ฐ 0≤h≤23 ์ด๋ฉฐ, ๋ถ๊ณผ ์ด๋ ๊ฐ๊ฐ 0≤m≤59, 0≤s≤59 ์ด๋ค. ๋ ๋ฒ์งธ ์ค์๋ ์๊ธ ํฌํ์ ์๊ฐ์ด hh:mm:ss๋ก ์ฃผ์ด์ง๋ค.
www.acmicpc.net
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(":");
String[] target = br.readLine().split(":");
int res = 0;
if((Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2])
> Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*60+Integer.parseInt(target[2]))){
res = 24*60*60+ Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*
60+Integer.parseInt(target[2]) - (Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2]));
}else{
res = Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*
60+Integer.parseInt(target[2])-(Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2]));
}
String hours = "";
String mins = "";
String secs = "";
int hour = res/3600;
if(hour < 10){
hours = "0"+ hour;
}else{
hours = ""+ hour;
}
int min = (res - hour*3600)/60;
if(min < 10){
mins = "0"+ min;
}else{
mins = ""+ min;
}
int sec = res - hour*3600 - min*60;
if(sec < 10){
secs = "0"+ sec;
}else{
secs = ""+ sec;
}
System.out.println(hours+":"+mins+":"+secs);
}
}
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
์ ๋ ฅ ๋ฌธ์์ด์ ":" ์ delimeter๋ก ํด์ splitํ๊ณ , split์ String๋ฐฐ์ด์ ๋ฐํํ๋๊น ๊ฐ์ ๋ฐ๊ฟ์คฌ๋ค.
๋ก์ง์ target์๊ฐ์ด input์๊ฐ๋ณด๋ค ์์ ๋ 24h๋ฅผ ๋ํด์ target - input ์ ํด์ฃผ๋ ๊ฒ์ผ๋ก ์์ฑํ๋๋ฐ, 37%์์ ๊ณ์ ๋ฉ์ท๋ค.
HH:MM:SS ๋ณํํ๋ ๊ณผ์ ๋ ๋งค์ฐ ์ง์ ๋ถํ๋ค... ์ธ์ ์ฏค ํ๋ฒ์ ๋ง์ถ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
์ ๋ฒ ๋ฌธ์ ๋ ๊ทธ๋ ๊ณ
- ์์ด๋์ด๋ ๋ง์์,
- ์ฃ์ง ์ผ์ด์ค์ ๊ฑธ๋ฆฌ๋ ๊ฒ
์ด ๋๊ฐ๊ฐ ๋ฌธ์ ์ธ๋ฐ ์ ์๋ณด์ธ๋ค.
์ ๋ต์ฝ๋
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(":");
String[] target = br.readLine().split(":");
int res = 0;
if((Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2])
>= Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*60+Integer.parseInt(target[2]))){
res = 24*60*60+ Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*
60+Integer.parseInt(target[2]) - (Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2]));
}else{
res = Integer.parseInt(target[0])*60*60+Integer.parseInt(target[1])*
60+Integer.parseInt(target[2])-(Integer.parseInt(input[0])*60*60+Integer.parseInt(input[1])*60+Integer.parseInt(input[2]));
}
String hours = "";
String mins = "";
String secs = "";
int hour = res/3600;
if(hour < 10){
hours = "0"+ hour;
}else{
hours = ""+ hour;
}
int min = (res%3600)/60;
if(min < 10){
mins = "0"+ min;
}else{
mins = ""+ min;
}
int sec = res%60;
if(sec < 10){
secs = "0"+ sec;
}else{
secs = ""+ sec;
}
System.out.println(hours+":"+mins+":"+secs);
}
}
substring์ ์ฌ์ฉํ๋ฉด split์ ์ฐ์ง ์๊ณ ๋ฌธ์์ด์ ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ค.(๋ค๋ฅธ ์์ด๋์ด)
Integer.parseInt(target.substring(0,2));
์ด๋ ๊ฒ ๋ง์ด๋ค. substring์ [ ) ๋ผ์ ๋ฒ์์ ์ฃผ์ํด์ผํ๋ค. ๊ทผ๋ฐ ์ด ๋ฐฉ๋ฒ์ ์ ๋ ฅ๊ฐ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด๊ณ split์ด ๋ณดํต์ ๊ฒฝ์ฐ์ ๋ ์ข๋ค.
์์ฃผ ๋ฉ์ฒญํ ์ด์ ๋๋ฌธ์ ํ๋ ธ๋ค. 00:00:00 -> 00:00:00 ์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒดํฌํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค... ์ฃ์ง ์ผ์ด์ค๋ฅผ ๊ผญ ์ดํผ๋ ์ต๊ด์ ๋ค์ฌ๋ณด์.
์ถ๋ ฅ ์กฐ๊ฑด ๋๋ฌธ์ 0์ ๋ ๋ฃ์ด์ฃผ๋ ๋ก์ง ๋๋ฌธ์ ์์ฒญ ์ฝ๋๊ฐ ์ง์ ๋ถํ๋ฐ, ๋ฌธ์์ดํฌ๋งท์ผ๋ก ํด๊ฒฐ๊ฐ๋ฅํ๋ค๋ ๊ฑธ ๋ฐฐ์ ๋ค.
// int๋ก h,m,s ๋ณํํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ๋ค.
System.out.printf("%02d:%02d:%02d", hours, mins, secs);
%02๋ ๋ ์๋ฆฌ๊น์ง ๊ฐ์ ๋ฐ๊ณ , ํ ์๋ฆฌ ๊ฐ์ด ๋ค์ด์ค๋ฉด ์์ 0์ผ๋ก ๋ฏธ๋ฆฌ ์ฑ์๋ฃ๋๋ค๋ ์๋ฏธ์ด๋ค.
"๋๊ธ, ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์๋ฉด ํฐ ํ์ด ๋ฉ๋๋ค"
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 1236: ์ฑ์งํค๊ธฐ (0) | 2023.10.16 |
---|---|
[BOJ][JAVA] 10158: ๊ฐ๋ฏธ (0) | 2023.10.08 |
[BOJ][JAVA] 1543: ๋ฌธ์ ๊ฒ์ (0) | 2023.10.03 |
[BOJ][JAVA] 1919: ์ ๋๊ทธ๋จ ๋ง๋ค๊ธฐ (0) | 2023.10.01 |
[BOJ][JAVA]2744: ๋์๋ฌธ์ ๋ฐ๊พธ๊ธฐ (0) | 2023.10.01 |