본문 바로가기
IT/Algorithm

프로그래머스(Programmers) 2016년(java)

by flatsun 2019. 8. 15.
반응형

프로그래머스(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;
  }
}
반응형

댓글