반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
맨 처음 먼저 작성한 코드가 너무 중복되는 부분이 많고 길어져서 2차 코드처럼 줄여보았다,,,,,
- 1차 정답 코드)
1차 코드 확인하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Y = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
// 윤년 확인
boolean isLeapYear = false;
if ((Y % 4 == 0 && Y % 100 != 0) || (Y % 400 == 0)) {
isLeapYear = true;
days[2] = 29;
}
if(3 <= M && M <= 5) {
if(inRange(D, days[M])) {
System.out.println("Spring");
return;
}
else {
System.out.println(-1);
return;
}
}
else if(6 <= M && M <= 8) {
if(inRange(D, days[M])) {
System.out.println("Summer");
return;
}
else {
System.out.println(-1);
return;
}
}
else if(9 <= M && M <= 11) {
if(inRange(D, days[M])) {
System.out.println("Fall");
return;
}
else {
System.out.println(-1);
return;
}
}
else {
if(M == 2) {
if(inRange(D, days[2])) {
System.out.println("Winter");
return;
}
else {
System.out.println(-1);
return;
}
}
else {
if(inRange(D, days[M])) {
System.out.println("Winter");
return;
}
else {
System.out.println(-1);
return;
}
}
}
}
private static boolean inRange(int num, int max) {
if(num <= max) return true;
return false;
}
}
|
cs |
- 2차 정답 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Y = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
// 윤년 확인
boolean isLeapYear = false;
if ((Y % 4 == 0 && Y % 100 != 0) || (Y % 400 == 0)) {
isLeapYear = true;
days[2] = 29;
}
String answer = "";
if(3 <= M && M <= 5) {
answer = inRange(D, days[M]) ? "Spring" : "-1";
}
else if(6 <= M && M <= 8) {
answer = inRange(D, days[M]) ? "Summer" : "-1";
}
else if(9 <= M && M <= 11) {
answer = inRange(D, days[M]) ? "Fall" : "-1";
}
else {
answer = inRange(D, days[M]) ? "Winter" : "-1";
}
System.out.println(answer);
}
private static boolean inRange(int num, int max) {
if(num <= max) return true;
return false;
}
}
|
cs |
✅ 해결 아이디어
✔ 윤년 판별 코드
- 4의 배수가 아니면, 윤년이 아님 (if y % 4 != 0 return false;)
- 4의 배수 중 100의 배수가 아니라면, 윤년 (if y % 100 != 0 return true;)
- 100의 배수 중 400의 배수라면, 윤년 (if y % 400 != 0 return true;)
- 100의 배수지만, 400의 배수가 아니면 윤년 (return false;)
💬 느낀 점
으앗 윤년.....
오랜만에 보다...ㅎㅎ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/NOVICE HIGH] 숫자 암호 만들기 (JAVA) (0) | 2023.09.15 |
---|---|
[코드트리/NOVICE MID] 중앙값 계산 2 (JAVA) (0) | 2023.09.11 |
[코드트리/NOVICE MID] 최소공배수 구하기 (JAVA) (0) | 2023.09.11 |
[코드트리/NOVICE MID] 두 정수에 대한 연산값 (0) | 2022.08.10 |
[코드트리/NOVICE MID] palindrome 여부 판단하기 (0) | 2022.08.04 |