Computer/Algorithm_Java
[Algorithm_Java] 2016년 (Success)
HJ0216
2023. 10. 12. 10:36
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
☕Language: Java
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
|
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] strArr = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
int monthDay = calcMonthToDay(a) + b;
answer = strArr[monthDay%7];
return answer;
}
public static int calcMonthToDay(int month){
int day = 0;
while(--month>0){
switch (month) {
case 2:
day += 29;
break;
case 4:
case 6:
case 9:
case 11:
day += 30;
break;
default:
day += 31;
}
}
return day;
}
}
|
🤔 해설
1. calcMonthToDay(int month)
- switch문을 활용한 일자 계산
- while(--month>0)
- 해당 월은 계산하지 않으므로 전위 연산자 사용
2. String[] strArr
- 1월 1일 기준 금요일에 맞춰 strArr 선언
3. strArr[monthDay%7]
- 요일 구하기
😮 이 외의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Solution {
public String solution(int a, int b) {
String answer = "";
int[] lastDayOfTheMonth = {31,29,31,30,31,30,31,31,30,31,30,31};
String[] DayOfTheWeek ={"FRI","SAT","SUN","MON","TUE","WED","THU"};
int totalDay = 0;
for(int i = 0 ; i< a-1; i++){
totalDay += lastDayOfTheMonth[i];
}
totalDay += b-1;
answer = DayOfTheWeek[totalDay %7];
return answer;
}
}
|
* 배열 활용
1
2
3
4
5
6
7
8
|
import java.time.*;
class Solution {
public String solution(int a, int b) {
return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0,3);
}
}
|
* time 함수 사용
🔗 소스 코드
GitHub
📚 참고 자료
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90