다희의 코딩 성장일기

[프로그래머스] level1. 2016년 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 2016년 (자바 JAVA)

ilmiodiario 2021. 8. 20. 17:27

[ 문제 ]  [프로그래머스] level1. 2016년 (자바 JAVA)

 

문제 링크 : 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년은 윤달이기 때문에 그에 맞는 12달 월들의 일수들을 배열로 만들었다. month[]; 
  • 윤달은 2월이 29일인 날!
  • 그다음 월~일까지 7가지 요일을 day[] 요일 배열을 만들었는데, 1일이 금요일이므로 아래와 같이 만들었다.
  • 0 1 2 3 4 5 6
  • 이렇게 만든 이유는 %연산자를 통해 %7로 하면 간단해지기 때문이다.
  • 만약 7일인 경우 목요일인데, 7%7 = 0이고 목요일이 되기 때문이다. 마찬가지로 8일인 경우는 8%7 = 1이기때문에 금요일이다.
  • date라는 변수를 두어 을 일수로 바꾸고 다 더해서 나머지연산자를 사용해 계산해준다.
  • 예를들어, a = 4, b = 84월 8일인 경우, 4월 전인 1월, 2월, 3월의 일자를 다 더한 후 8을 더해주면 된다.
  • 31 + 29 + 31 + 8 = 99 이라는 숫자가 나오고 99%7 = 1 이므로 금요일이다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 날짜 계산 헷갈리지 않게 잘 할 것!

 

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

 

 

 

REVIEW

Comments