미소를뿌리는감자의 코딩

[프로그래머스 2024/01/17] 2016년 본문

코딩 테스트/프로그래머스

[프로그래머스 2024/01/17] 2016년

미뿌감 2024. 1. 17. 21:37
728x90

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

 

프로그래머스

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

programmers.co.kr

 

1. 접근 방법

이 문제의 경우, 각 월별 일들이 다르기 때문에, 이를 리스트로 만들어서 저장해두어야 할 필요성을 느꼈다.

따라서 2016년 *윤년 기준으로 리스트를 만들어서 저장해 두었다.

 

따라서 만약 3월 29일 이라면,

1월 2월 달의 날들을 days 변수에 더했고, 29일을 그대로 변수에 더해주었다.

 

이후 7로 나눈 나머지를 구하여, 나머지에 따라 요일을 지정해 주었다. 

rough draft

+ 처음에는 switch 문으로 코드를 구성하였으나, 프로그래머스에서는 잘 적용이 안되는 것 같아

if else 문으로 바꾸어서 다시 적용하였다.

 

Java에서 function을 부르는 법을 알지 못했었는데, 이번에 알게 되었다.

전체 class 밑에 사용하고자 하는 함수 말고 다른 함수인, main 함수를 만들어서, 

obj를 생성하는 방법이었다.

이후 만든 obj.함수 를 통해 사용하고자 하는 함수를 적어주었다.

public static void main(String[] args){
        p_2016 obj = new p_2016();
        String result = obj.solution(2,29);
        System.out.println(result);
    }

 

2. 코드

import java.util.List;
import java.util.Arrays;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class p_2016{
    public static void main(String[] args){
        p_2016 obj = new p_2016();
        String result = obj.solution(2,29);
        System.out.println(result);
    }
    public String solution(int a, int b) {

        List<Integer> list = Arrays.asList(0,31,29,31,30,31,30,31,31,30,31,30,31);
        List<String> day = Arrays.asList("THU","FRI","SAT","SUN","MON","TUE","WED");

        int days = 0;

        for(int i= (a-1); i>=1; i--){
            days+= list.get(i);
        }
        days +=b;
        days = days%7;

        if (days == 1) {
            return day.get(1);
        } else if (days == 2) {
            return day.get(2);
        } else if (days == 3) {
            return day.get(3);
        } else if (days == 4) {
            return day.get(4);
        } else if (days == 5) {
            return day.get(5);
        } else if (days == 6) {
            return day.get(6);
        }else {
            return day.get(0);
        }
    }

}
728x90