weeklycalendar 문제 다시 질문좀 드려요

  • zlzl
    zlzl

    뭐가 문제여서 오답인지 도저히 모르겠네요 ㅠㅠ
    테스트케이스 이것저것 다 입력해봤는데....
    도움 좀 부탁드려용~!

    import java.util.Scanner;

    public class WeeklyCalendar {

    static int endDay(int month) {
        int endDay = 0;
    
        switch (month) {
        case 1:
            endDay = 31;
            break;
        case 2:
            endDay = 28;
            break;
        case 3:
            endDay = 31;
            break;
        case 4:
            endDay = 30;
            break;
        case 5:
            endDay = 31;
            break;
        case 6:
            endDay = 30;
            break;
        case 7:
            endDay = 31;
            break;
        case 8:
            endDay = 31;
            break;
        case 9:
            endDay = 30;
            break;
        case 10:
            endDay = 31;
            break;
        case 11:
            endDay = 30;
            break;
        case 12:
            endDay = 31;
            break;
    
        }
        return endDay;
    
    }
    
    static int dayOrder(String day) {
        int returnDay = 0;
        if (day.equals("Sunday")) {
            returnDay = 0;
        }
        if (day.equals("Monday")) {
            returnDay = 1;
        }
        if (day.equals("Tuesday")) {
            returnDay = 2;
        }
        if (day.equals("Wednesday")) {
            returnDay = 3;
        }
        if (day.equals("Thursday")) {
            returnDay = 4;
        }
        if (day.equals("Friday")) {
            returnDay = 5;
        }
        if (day.equals("Saturday")) {
            returnDay = 6;
        }
        return returnDay;
    }
    
    public static void main(String[] args) {
        int month = 0;
        int date = 0;
        String day = "";
        Scanner sc = new Scanner(System.in); // 스캐너 변수 선언
        int caseCount = sc.nextInt();
        int[][] result = new int[caseCount][7];
        for (int i = 0; i < caseCount; i++) {
            month = sc.nextInt();
            date = sc.nextInt();
            day = sc.next();
    
            int endDay = endDay(month);
            int dayOrder = dayOrder(day);
            int startDate = date - dayOrder;
            if ((month >= 1 && month <= 12) && (date >= 1 && date <= endDay)) {
                for (int a = 0; a < 7; a++) {
                    if (startDate <= 0) {
                        startDate = startDate + endDay;
                    }
                    if (startDate > endDay) {
                        startDate = 1;
                    }                   
                    result[i][a] = startDate;
                    startDate++;
                }
            }
    
        }
    
        for (int k = 0; k < caseCount; k++) {
            for (int m = 0; m < 7; m++) {
                if (result[k][m] != 0) {
                    if (m == 6) {
                        System.out.print(result[k][m]);
                    } else {
                        System.out.print(result[k][m] + " ");
                    }
                }
            }
            System.out.println();
        }
    }

    }


    10년 전
2개의 댓글이 있습니다.
  • Kureyo
    Kureyo

    보통 코너케이스는 달이 넘어가는 경우/년도가 넘어가는 경우 많이 발생하니까 그런거 위주로 테스트해보세요 1월 1일 목요일 이런 데이타들로요


    10년 전 link
  • zlzl
    zlzl

    ㄴ 감사합니다!!! 왜 이걸 생각못했는지 ㅠㅠㅠ


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.