코린이의 소소한 공부노트

[프로그래머스/Lv.1] 2016년 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 2016년

무지맘 2022. 11. 26. 01:01

1. Input

1) 정수 a

2) 정수 b

 

2. Output

1) 2016ab일의 요일을 나타내는 문자열

2) 요일의 이름은 일요일부터 토요일까지 각각 “SUN”, “MON”, “TUE”, “WED”, “THU”, “FRI”, “SAT”

 

3. Constraint

1) 2016년은 윤년

2) 2016ab일은 실제로 있는 날로, 1326일같은 날짜는 주어지지 않는다.

 

4. Example

Input: a=5, b=24 -> Output: “TUE”

설명: 2016524일은 화요일이다.

 

5. Code

1) 첫 코드(2022/??)

String answer = "";
int[] day = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int count = -1; // a=1, b=1일 때 금요일을 7로 나눈 나머지가 0이 되게 맞춤

// 날짜 세기
if(a != 1)
for(int i=0 ; i<a-1 ; i++)
    count += day[i];
count += b;

// count를 7로 나눈 나머지 확인
// 나머지가 0일때부터 FRI, SAT, SUN, MON, TUE, WED, THU
switch(count%7){
    case 0:
        answer = "FRI"; break;
    case 1:
        answer = "SAT"; break;
    case 2:
        answer = "SUN"; break;
    case 3:
        answer = "MON"; break;
    case 4:
        answer = "TUE"; break;
    case 5:
        answer = "WED"; break;
    case 6:
        answer = "THU"; break;
}
return answer;

2) 다시 풀어본 코드(2022/11/26)

String[] dayOfWeek = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
int[] days = {31,29,31,30,31,30,31,31,30,31,30,31};

int countDays = b;
for(int i=0 ; i<a-1 ; i++)
    countDays += days[i];

return dayOfWeek[(countDays-1)%7];

  - 코드는 심플해졌지만, 1번이 평균적으로 0.01ms 빠름