Algorithm/CodingTest

[Programmers] Level.1 2016년(Java)

누구세연 2023. 10. 19. 22:31

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2016년 문제 Java로 풀이하겠습니다.

문제 설명

이 문제는 2016년 특정 날짜가 무슨 요일인지 찾는 것입니다.

 

저는 다음과 같이 문제 풀이 하였습니다.

class Solution {
    public String solution(int a, int b) {
        String[] week = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
        int sum = 0; 
        
        for(int i=1; i<a; i++){
            if(i==4 || i==6|| i==9|| i==11){
                sum+=30;
            }else if(i == 2){
                sum+=29;
            }else{
                sum+=31;
            }
        }   
        
        return week[(sum+b+4)%7];
    }
}

 

  1. 요일을 나타내는 문자열 배열 week을 선언합니다.
  2. 반복문을 사용하여 주어진 월 a 이전의 월까지의 날 수를 누적합니다.
    ex) a= 5라면 4월까지 날 수를 누적
  3. 4,6,9,11월은 30일이고 2월은 29일 그리고 나머지 월은 31일로 계산합니다.
  4. 마지막으로 week 배열의 인덱스를 (sum +b + 4) % 7로 설정하여 해당 요일을 반환합니다.
    여기서 4는 1월 1일이 금요일이기 때문에 첫 요일을 기준으로 맞추기 위함입니다.

 

 

다른 이견이 있다면 댓글로 자유롭게 남겨주세요.