제이슨의 개발이야기

코딩테스트 2016 프로그래머스 Java 본문

코딩테스트

코딩테스트 2016 프로그래머스 Java

제이쓰은 2021. 5. 17. 19:15
728x90
반응형

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 이란 문제를 풀어봤습니다

 

이 문제는 비교적 쉬운문제라서 다른분들도 쉽게 풀었으거라고 생각합니다 ^^ 

 

그런대 다른 분들이 푼 코드를 봤는대 확실히 잘하시는 분들은 코드 줄이 적고 속도도 빠르게 나오는거 같습니다! 

 

문제 설명

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

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

 

 

제한 조건

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

입출력 예

abresult

5 24 "TUE"

 

제가 작성한 코드 

  public String solution(int a, int b) {
        String answer = "";
        String day = "FRI";
        for(int i = 1; i<=a ; i++){
            int temp = 1;
            while(true){
                if(i==1 || i ==3 || i==5 ||i==7||i==8||i==10||i==12){
                    if(temp==32){
                        break;
                    }
                }else{
                    if(temp==31){
                        break;
                    }
                }
                if(i==2 && temp==30){
                    break;
                }else if(i==a && temp==b){
                    answer = day;
                    break;
                }else{
                    temp++;
                    if(day.equals("SUN")){
                        day = "MON";
                    }else if(day.equals("MON")){
                        day = "TUE";
                    }else if(day.equals("TUE")){
                        day = "WED";
                    }else if(day.equals("WED")){
                        day = "THU";
                    }else if(day.equals("THU")){
                        day = "FRI";
                    }else if(day.equals("FRI")){
                        day = "SAT";
                    }else {
                        day = "SUN";
                    }
                }
            }

            if(answer.length()>0){
                return answer;
            }
        }
        return answer;
    }
}

 

저는 이렇게 해결했습니다 ! 그러나 보이는 것처럼 코드가 조금 난잡하지 않나요?ㅠㅠ

 

저는 아직 실력이 많이 부족하다라고 느꼈습니다 

 

다른 분들의 코드를 보면서 이건 괜찮다 싶은 두개 밑에 올리겠습니다 

 

import java.util.*;

class TryHelloWorld
{
    public String getDayName(int month, int day)
    {
        Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
                        .setDate(2016, month - 1, day).build();
        return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
    }
    public static void main(String[] args)
    {
        TryHelloWorld test = new TryHelloWorld();
        int a=5, b=24;
        System.out.println(test.getDayName(a,b));
    }
}

 

class TryHelloWorld
{
    public String getDayName(int a, int b)
    {
      String answer = "";
      switch(a) {
        case 1:
          if(b % 7 == 1)
            answer = "FRI";
          else if(b % 7 == 2)
            answer = "SAT";
          else if(b % 7 == 3)
            answer = "SUN";
          else if(b % 7 == 4)
            answer = "MON";
          else if(b % 7 == 5)
            answer = "TUE";
          else if(b % 7 == 6)
            answer = "WED";
          else
            answer = "THU";
          break;
        case 2:
          if(b % 7 == 1)
            answer = "MON";
          else if(b % 7 == 2)
            answer = "TUE";
          else if(b % 7 == 3)
            answer = "WED";
          else if(b % 7 == 4)
            answer = "THU";
          else if(b % 7 == 5)
            answer = "FRI";
          else if(b % 7 == 6)
            answer = "SAT";
          else
            answer = "SUN";
          break;
        case 3:
          if(b % 7 == 1)
            answer = "TUE";
          else if(b % 7 == 2)
            answer = "WED";
          else if(b % 7 == 3)
            answer = "THU";
          else if(b % 7 == 4)
            answer = "FRI";
          else if(b % 7 == 5)
            answer = "SAT";
          else if(b % 7 == 6)
            answer = "SUN";
          else
            answer = "MON";
          break;
        case 4:
          if(b % 7 == 1)
            answer = "THU";
          else if(b % 7 == 2)
            answer = "FRI";
          else if(b % 7 == 3)
            answer = "SAT";
          else if(b % 7 == 4)
            answer = "SUN";
          else if(b % 7 == 5)
            answer = "MON";
          else if(b % 7 == 6)
            answer = "TUE";
          else
            answer = "WED";
          break;  
        case 5:
            if(b % 7 == 1)
            answer = "SUN";
          else if(b % 7 == 2)
            answer = "MON";
          else if(b % 7 == 3)
            answer = "TUE";
          else if(b % 7 == 4)
            answer = "WED";
          else if(b % 7 == 5)
            answer = "THU";
          else if(b % 7 == 6)
            answer = "FRI";
          else
            answer = "SAT";
          break;
        case 6:
            if(b % 7 == 1)
            answer = "WED";
          else if(b % 7 == 2)
            answer = "THU";
          else if(b % 7 == 3)
            answer = "FRI";
          else if(b % 7 == 4)
            answer = "SAT";
          else if(b % 7 == 5)
            answer = "SUN";
          else if(b % 7 == 6)
            answer = "MON";
          else
            answer = "TUE";
          break;
        case 7:
            if(b % 7 == 1)
            answer = "FRI";
          else if(b % 7 == 2)
            answer = "SAT";
          else if(b % 7 == 3)
            answer = "SUN";
          else if(b % 7 == 4)
            answer = "MON";
          else if(b % 7 == 5)
            answer = "TUE";
          else if(b % 7 == 6)
            answer = "WED";
          else
            answer = "THU";
          break;
        case 8:
            if(b % 7 == 1)
            answer = "MON";
          else if(b % 7 == 2)
            answer = "TUE";
          else if(b % 7 == 3)
            answer = "WED";
          else if(b % 7 == 4)
            answer = "THU";
          else if(b % 7 == 5)
            answer = "FRI";
          else if(b % 7 == 6)
            answer = "SAT";
          else
            answer = "SUN";
          break;
        case 9:
            if(b % 7 == 1)
            answer = "THU";
          else if(b % 7 == 2)
            answer = "FRI";
          else if(b % 7 == 3)
            answer = "SAT";
          else if(b % 7 == 4)
            answer = "SUN";
          else if(b % 7 == 5)
            answer = "MON";
          else if(b % 7 == 6)
            answer = "TUE";
          else
            answer = "WED";
          break;
        case 10:
            if(b % 7 == 1)
            answer = "SAT";
          else if(b % 7 == 2)
            answer = "SUN";
          else if(b % 7 == 3)
            answer = "MON";
          else if(b % 7 == 4)
            answer = "TUE";
          else if(b % 7 == 5)
            answer = "WED";
          else if(b % 7 == 6)
            answer = "THU";
          else
            answer = "FRI";
          break;
        case 11:
            if(b % 7 == 1)
            answer = "TUE";
          else if(b % 7 == 2)
            answer = "WED";
          else if(b % 7 == 3)
            answer = "THU";
          else if(b % 7 == 4)
            answer = "FRI";
          else if(b % 7 == 5)
            answer = "SAT";
          else if(b % 7 == 6)
            answer = "SUN";
          else
            answer = "MON";
          break;
        case 12:
            if(b % 7 == 1)
            answer = "THU";
          else if(b % 7 == 2)
            answer = "FRI";
          else if(b % 7 == 3)
            answer = "SAT";
          else if(b % 7 == 4)
            answer = "SUN";
          else if(b % 7 == 5)
            answer = "MON";
          else if(b % 7 == 6)
            answer = "TUE";
          else
            answer = "WED";
          break;
        }
        return answer;
    }
    public static void main(String[] args)
    {
        TryHelloWorld test = new TryHelloWorld();
        int a=5, b=24;
        System.out.println(test.getDayName(a,b));
    }
}

 

마지막 코드는 상당히 길지만 확 이해하기 쉬운 코드라서 개인적으로 좋았다고 생각합니다 ㅎㅎ

 

https://github.com/jaeilssss/CodingTestsStudy

 

jaeilssss/CodingTestsStudy

코딩테스트 코드 모음. Contribute to jaeilssss/CodingTestsStudy development by creating an account on GitHub.

github.com

 

728x90
반응형