0. ๋ฌธ์
1. ๋ด ํ์ด
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
sc.nextLine();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= T; i++) {
String N = sc.nextLine();
String yy = N.substring(0,4);
String m = N.substring(4,6);
String d = N.substring(6,8);
int year = Integer.parseInt(yy);
int month = Integer.parseInt(m);
int day = Integer.parseInt(d);
if(month > 12 || month < 1) {
System.out.println("#"+i+" "+ -1);
} else if (month == 2 && day > 28) {
System.out.println("#"+i+" "+ -1);
} else if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day > 31) {
System.out.println("#"+i+" "+ -1);
} else if ((month == 4 || month == 6 || month == 9 || month == 11)&& day > 30){
System.out.println("#"+i+" "+ -1);
} else {
System.out.println("#"+i+" "+ yy +"/"+ m+ "/" + d);
}
}
}
}
2. ๋ฐฐ์ด ๊ฒ
(1) sc.nextInt()๋ก ๋ฐ์ ๋ค์ sc.next() ํน์ sc.nextLine()์ ์ฐ๋ ๊ฒฝ์ฐ, (์ฆ ๋ค์ String์ ๋ฐ์ ๊ฒฝ์ฐ)
์ซ์ ์ ๋ ฅ ํ ์ฌ์ฉ์๊ฐ ์น ๊ณต๋ฐฑ์ด๋ enterํค๊ฐ ๊ทธ ๋ค์ next()๋ nextLine()์ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ณต๋ฐฑ์ด ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ ๊ณ์ฐ์ ์์ด์ ์ค๋ฅ๊ฐ ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ sc.nextInt()์ sc.nextLine() ์ฌ์ด์ sc.nextLine()์ ํ๋ ๋ ๋ฃ์ด์ค์ผ ํ๋ค.
์ด๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ์ง ์๊ณ , ๊ณต๋ฐฑ์ ๋ด์ buffer์ผ ๋ฟ์ด๋ค.
(2)N.subString(์์ ์ธ๋ฑ์ค, ๋์ธ๋ฑ์ค)
subString์ ๋ฌธ์์ด์ ์ผ์ ๋ถ๋ถ๋ง ์ถ์ถํด์ ์ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ํจ์์ด๊ณ ,
์์ ์ธ๋ฑ์ค ๋ถํฐ, ๋ ์ง์ ์ธ๋ฑ์ค๊น์ง ์๋ผ์ ๋ฐํ ํ๋ค.
(3)Integer.parseInt(String ๊ฐ)
์ด๋ String ๊ฐ์ Integer๋ก ๋ณํํ ๋ ์ฌ์ฉํ๋ค.
3. ๋ค๋ฅธ ์ฌ๋์ ํ์ด
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int i = 1; i <= T; i++) {
int result = 0;
int date = sc.nextInt();
int year = date/10000;
int month = (date%10000)/100;
int day = date%100;
if(month> 12 || month < 1){
result = -1;
}
switch (month){
case 2 :
if(!(day<=28 && day>=1)){
result = -1;
}
break;
case 4:
case 6:
case 9:
case 11:
if(!(day <=30 && day>=1)){
result= -1;
}
break;
default:
if(!(day<=31 && day>=1)){
result = -1;
}
}
if(result != -1){
System.out.printf("#%d %04d/%02d/%2d\n", i, year,month,day);
}else{
System.out.printf("#%d %d\n", i, result);
}
}
}
}
switch ๋ฌธ์ ์ด์ฉํ์ฌ ํ์๋ค.
switch ๋ฌธ์ break๋ฌธ์ ๋ง๋๊ธฐ ์ ๊น์ง ๋ค์ด๋ง๋ case๋ถํฐ ์๋๋ก ๋ชจ๋ ์ฝ๋๋ฅผ ์คํํ๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ 4 6 9 11์ ๋ฌถ์ด์ ์ฒ๋ฆฌ ํ๋ค.
ํ์คํ ๋ด๊ฐ ์ด if, else-if ๋ณด๋ค ๊ฐ๊ฒฐํ๋ค. switch๋ฅผ ์ธ ์ ์์๋ ์ด์ ๋ ๋ฌ๋ ฅ์ ๊ฐ์ด ์ ์๋ก ๋ฑ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ฐ์ ๋ ์ฒ์๋ถํฐ int๋ก ๋ฐ์๋๋ฐ, ํด๋น ๊ฐ์ ๋ ์ ์ผ์ ๋๋๋ ๋ฐฉ๋ฒ์ด ์ธ์์ ์ด๋ค.
year๋ 10000์ผ๋ก ๋๋์์ ๋์ ๋ชซ(์์ 4์๋ฆฌ),
month๋ year ์์ 100์ผ๋ก ๋๋ ๋ชซ(5๋ฒ, 6๋ฒ)
day๋ ์ ์ฒด๋ฅผ 100์ผ๋ก ๋๋ ๋๋จธ์ง (7๋ฒ, 8๋ฒ)
4. ๋ฐฐ์ด ๊ฒ
printf๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ
%d๋ ์ ์ํ์ ๋ฐ๋ ์ถ๋ ฅ ์์์ด๋ค.
("%d", %d์๋ฆฌ์ ๋ค์ด๊ฐ ์ ์)
% ์ d ์ฌ์ด์ ์ซ์๋งํผ ์๋ฆฌ๋ฅผ ํ๋ณดํ๋ค.
๋ฐ๋ผ์ month๋ 1~9๊น์ง ํ ์๋ฆฌ ์ ์ด์ง๋ง, %2d๋ฅผ ํจ์ผ๋ก์ 01~09๋ก ํํํ ์ ์๊ฒ ๋๋ค.