[프로그래머스]2016년
https://school.programmers.co.kr/learn/courses/30/lessons/12901
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

배열의 개념을 활용하여 문제를 푸는 문제입니다. 하지만 그것외에도 설명할 내용이 더 필요한데
일단 문제풀이 소스부터 한번 보시겠습니다.
|
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
|
import java.time.LocalDate;
import java.time.DayOfWeek;
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] arr = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
LocalDate date = LocalDate.of(2016, a, b);
DayOfWeek dayOfWeek = date.getDayOfWeek();
int dayOfWeekNumber = dayOfWeek.getValue();
switch(dayOfWeekNumber) {
case 1:
answer = "MON";
break;
case 2:
answer = "TUE";
break;
case 3:
answer = "WED";
break;
case 4:
answer = "THU";
break;
case 5:
answer = "FRI";
break;
case 6:
answer = "SAT";
break;
case 7:
answer = "SUN";
break;
default:
}
return answer;
}
}
|
cs |
문제에서 알 수 있는 내용은 5월 24일이 화요일이라는 정보인데 화요일을 문자열인 "TUE"로 반환하도록 알고리즘을 구현하는 것이 문제의 핵심입니다. 요일은 총 7개밖에 없으니 7개 요소를 가진 문자열 배열을 하나 생성해줍니다.
그 다음에 LocalDate라는 클래스를 사용하는데, 해당 클래스는 날짜 값을 읽는 기능을 제공해줍니다.
여기서 LocalDate.of 이라는 문법을 사용합니다. 이 of이라는 메소드를 통해 연월일의 정보를 date 변수에 저장해줍니다. 그리고 DayOfWeek라는 클래스를 사용하는데 이것은 요일을 표현하는 DayOfWeek Enum을 가져오는 역할을 합니다. 이 DayOfWeek Enum을 가지고 요일을 구할 수 있는데 LocalDate.of에 입력된 연월일에 해당하는 요일을 문자열로 반환해줍니다. 예를 들어 LocalDate.of(2016, 5, 24)인 경우 dayOfWeek는 TUESDAY가 되는 것입니다.
그 후에 DayOfWeek의 getValue() 메소드를 활용합니다. 이 메소드는 요일을 숫자로 가져오게 해주는 기능이 있습니다. 월요일부터 일요일까지 1~7의 숫자로 표현됩니다. 즉, 월요일이 1, 일요일이 7입니다. 그래서 화요일은 2가 됩니다. 이 개념을 활용하여 switch~case문을 작성하여 1은 "MON", 2는 "TUE", 3은 "WED", 4는 "THU"....... 이런 식으로 코드를 작성하면 최종적으로 원하는 결과를 얻을 수 있습니다.
○ 요약
문제 이해는 그렇게 어렵지 않았는데 막상 LocalDate 클래스나 DayOfWeek를 사용한다는 게 결코 쉬운 접근법은 아니라는 생각이 들었습니다. 유사한 문제를 접하게 될 경우를 고려하여 LocalDate와 DayOfWeek 개념을 이번 기회를 통해 숙지하시면 좋을 듯 합니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스]-최소 직사각형 (0) | 2022.12.28 |
|---|---|
| [프로그래머스]부족한 금액 계산하기 (0) | 2022.12.27 |
| [프로그래머스]콜라츠 추측 (0) | 2022.12.13 |
| [프로그래머스]자연수 뒤집어 배열로 만들기 (0) | 2022.12.08 |
| [프로그래머스]가운데 글자 가져오기 (0) | 2022.12.08 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스]-최소 직사각형
[프로그래머스]-최소 직사각형
2022.12.28 -
[프로그래머스]부족한 금액 계산하기
[프로그래머스]부족한 금액 계산하기
2022.12.27 -
[프로그래머스]콜라츠 추측
[프로그래머스]콜라츠 추측
2022.12.13 -
[프로그래머스]자연수 뒤집어 배열로 만들기
[프로그래머스]자연수 뒤집어 배열로 만들기
2022.12.08