프로그래머스(Programmers)
문제명 : 2016년
언어 : 자바(java)
2016년 문제는 Calendar를 사용해서 문제를 풀어야 되는데
쓸 줄 모르기 때문에 상당한 위기가 닥치게 된다
날짜를 받는 건 받는건데 그 날짜를 어떻게 Calendar에 넣고
그 날짜에서 요일을 가져오냐는 것이다
일단 답안을 보기 전에 간단하게 설명을 하자면
Calendar cal = Calendar.getInstance(); 로 현재 날짜를 가져와 cal 객체 안에 넣을 수 있고
cal.set(년,월,일 중 선택, 값) 으로 날짜를 변경해 줄 수 있는데
년 - Calendar.YEAR
월 - Calendar.MONTH
일 - Calendar.DAY_OF_MONTH
이렇게 넣어주면 된다
마지막으로 값을 뽑아올 때는
cal.get(Calendar.년월일 중 선택)
이런 식으로 가져오는데
요일을 가져와야 하니
cal.get(Calendar.DAY_OF_WEEK) 로 가져오면 된다
SUN MON 이런 식으로 나오지 않고
숫자로 나오는 만큼
숫자를 요일로 영어 3글자로 바꿀 방안도 생각해야 한다
내가 푼 방법은 아래와 같은데
일단 배열을 하나 만들어 SUN 부터 SAT 까지 넣어준다
이후 Calendar cal 객체를 만들어 주고
set을 통해 년부터 월일까지 차례로 넣어준다
월에서 -1을 꼭 해줘야 하는데 자바에서 1월은 0이기 때문이다
마지막으로 answer에 cal.get(Calendar.DAY_OF_WEEK)를 통해
요일 값을 가져온 뒤 -1을 해 주는데 배열도 역시 0부터 시작하기 때문이다
arr[cal.get(Calendar.DAY_OF_WEEK) - 1] 로 배열에 적혀있는 요일 알파벳 세 글자를 가져오게 되는 것이다
이후 위의 값을 answer에 넣어준 뒤 반환하면 끝이 난다
프로그래머스에 바로 적용할 수 있는 답은 아래 내용을 복사 붙여넣기 해주면 된다
import java.util.Calendar;
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] arr = new String[] {"SUN","MON","TUE","WED","THU","FRI","SAT"};
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2016);
cal.set(Calendar.MONTH, a-1);
cal.set(Calendar.DAY_OF_MONTH, b);
answer = arr[cal.get(Calendar.DAY_OF_WEEK) -1];
return answer;
}
}
'IT > Algorithm' 카테고리의 다른 글
프로그래머스(Programmers) 약수의 합(java) (0) | 2019.08.18 |
---|---|
프로그래머스(Programmers) 문자열을 정수로 바꾸기(java) (0) | 2019.08.15 |
프로그래머스(Programmers) 두 정수 사이의 합(java) (0) | 2019.08.15 |
프로그래머스(Programmers) 나누어 떨어지는 숫자 배열(java) (0) | 2019.08.11 |
프로그래머스(Programmers) 문자열 내 p와 y의 개수(java) (0) | 2019.08.10 |
댓글