알고리즘/프로그래머스

[프로그래머스]연습문제>2016년 Java

Ellie67 2021. 6. 29. 15:28

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

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

 

2016년 1월 1일은 금요일이라는 힌트를 가지고 시작했다.

금요일이라는 힌트 때문에 day 배열을 "FRI","SAT","SUN","MON","TUE","WED","THU" 순으로 작성했다.

2016년은 윤년이라고 했으므로 2월은 29일까지 있다.

result 변수에 a달 전까지의 date를 더해준다.

그리고 result에 b를 더해주는데 1월 1일을 포함하기 위해 -1을 해준다.

마지막으로 day의 인덱스를 result를 7로 나눈 나머지 값으로 해서 요일을 구한다.

 

[내 코드]

public static String solution(int a, int b) {
        String answer = "";
        String[] day = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
        int[] date = {31,29,31,30,31,30,31,31,30,31,30,31};
        int result = 0;
        
        for(int i=0; i<a-1; i++) {
        	result += date[i];
        }
        result += b-1;
        answer = day[result % 7];
        return answer;
    }

 

[다른 사람의 풀이]

자바를 잘 활용한 코드인 것 같아서 가져왔습니다. 이렇게 쓸 수 있을 정도로 자바를 익히고 싶네요

import java.time.*;
class Solution {
  public String solution(int a, int b) {
      return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0,3);
  }
}