본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 2016년 (level 1)

by HBGB 2019. 11. 5.

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년 | 프로그래머스

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다.

programmers.co.kr

 

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
      public String solution(int a, int b) {
 
          // 달력 일수, 요일 배열
          int[] arrMonthDates = {312931303130313130313031};
          String[] arrDays = {"FRI""SAT""SUN""MON""TUE""WED""THU"};
          
          // a월 이전까지의 날짜 합산
          int iDateSum = 0;
 
          for (int i = 0; i < a - 1; i++) {
              iDateSum += arrMonthDates[i];
          }
 
          // a월의 b일 합산
          iDateSum += b;
          
          // 1일 제외 후 요일 계산
          return arrDays[(iDateSum - 1) % 7];
      }
}
Colored by Color Scripter

 

오랜만에 "손등으로 달력일자 구하기"를 해봤다 ㅎㅎ

 

어려운 문제는 아니었으나, 

다른 사람 풀이를 보던 중에 신기하게 푸신 분이 있어서 공유해본다. 

1
2
3
4
5
6
7
8
public String getDayName(int month, int day)
{
    Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
                    .setDate(2016, month - 1, day).build();
    return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
}
 
// 프로그래머스 : 덱스또 님 풀이
Colored by Color Scripter

 

Calendar 클래스에 이런 기능이...

댓글