자바 초급문제로 맨땅에 해딩하기

자바 초급문제 9. 2016년

Jungsoomin :) 2020. 3. 31. 01:29

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12901)

자바 초급 문제의 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일같은 날짜는 주어지지 않습니다)

윤달이 무엇인지 난 몰랐다...(윤달이 뭐야.?)

윤달이 생일이신 분들이 생일을 적게 맞이하신다는 것도 몰랐다. 덕분에 2020년이 윤달이라는 것을 알았다...ㅠ(내 무식도 알았다..)

 

코드를 보면.. 일 월 화 수 목 금 토 일 의 문자열 배열을 맞추어주고, 해당 int배열을 만들어 해당 월을 날짜를 기입했다.

그리고 합산할 int 변수 sum을 지정했다.

 

그 후에 month의 길이 즉 12개 만큼 0부터 11까지 for문을 돌린다.

모든 일수를 합산한다, 366일이 나온다. 일주일은 7일이고 아무리 큰 수여도 7로 나누면 한정된 나머지 값이 나온다고 생각했다.

그리고 입력한 날짜도 합산한다. 어쩌피 7로 나눌테니... 그렇게 난 ...먼 길을 가고서 또 간 것 같다.

자...보면 switch문을 통해 나머지에 따라 요일을 answer에 대입시켰다. 뿌듯했다. 이 순간은 그랬다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package programmers_2016년;
import java.util.*;
public class Exam {
    public String solution(int a , int b) {
        String answer = "";
    String[] today = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
    //switch 문 돌릴 String 타입 배열 today
    int[] month = {31,29,31,30,31,30,31,31,30,31,30,31};
        // [인덱스]은 월.  일수는 값. 윤달 2월 29일
        int sum =0;
        //일수 합계를 만들 변수,  요일은 7개뿐이므로 %7의 값에따라 나오게 되어있다고 생각함.
        forint i=0; i<month.length; i++ ) {
            sum += month[i];
        //모든 일수 합산. >>366
        }
        sum += b;
        //오늘 날짜도 합산. 24일이라면 >>390
        
        switch(sum%7) {
        /*나머지로 요일 구할 스위치문 금요일이 시작이라고했으니 금요일부터 7일후는 목요일.
        즉 나머지가 0일때 목요일 그 후로 순차진행.*/
        case 0: answer = today[4];
        break;//나머지가 0이다 > 목
        case 1: answer = today[5];
        break;//나머지가 1이다 > 금
        case 2: answer = today[6];
        break;//나머지가 2이다 > 토
        case 3: answer = today[0];
        break;//나머지가 3이다 > 일
        case 4: answer = today[1];
        break;//나머지가 4이다 > 월
        case 5: answer = today[2];
        break;//나머지가 5이다 > 화
        case 6: answer = today[3];
        break;//나머지가 6이다 > 수
        
        }//7일이니 나머지도 7가지 뿐이다라고 가정한다.
        
        
        
        //넣은 요일 리턴.
        return answer;
    }
}
 

 

 

코드 기입 과정에서 주석을 올바르게 바꾸지않았구나..

뿌듯했다. ..오오 내가..내가 했어!(지금 생각하고 뭘 했다는 건지 느낌을 모르겠다.) 됬어!! 했다. 했으나...

네, "실패"(를) 하셨군요!

 

....ㄴ...네 실패를 했습니다..그래서 내일 또 부딪칠라구요! ...(새벽 2시가 다 되간다..일단 자고 내일 보자 너란 문제..)