본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q2025 : 좋은 날

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q2025 : 좋은 날 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

연도/월/일 형태로 입력된다.
(1000<=연도<=9999), 월과 일은 실제 존재하는 날짜만 입력으로 들어온다.

출력

주어진 일자가 좋은 날이면 "yes"를 출력하고, 아니면 "no"를 출력한다.

예시

  • 입력 : 2012/12/02
  • 출력 : yes

Solution (풀이)

  • 풀이 : 메모리 11204, 시간 : 69
public class Answer2 {

    public static void main(String[] args) throws IOException, NumberFormatException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), "/");

        // 년 월 일 입력받기
        String year = st.nextToken();
        String month = st.nextToken();
        String day = st.nextToken();

        char[] letters = new char[4];
        // 년도의 각 자리 숫자를 배열에 저장
        for (int i=0; i<year.length(); i++) {
            letters[i] = year.charAt(i);
        }

        boolean isGoodDay = true;

        for (int i=0; i<4; i++) {
            char checkLetter = (month+day).charAt(i); // 월+일(String) 의 각 자리 숫자를 찾아

            for (int j=0; j<4; j++) { // 배열에 저장된 년도의 숫자와 일치하는것이 있는지 체크
                if (letters[j] == checkLetter) {
                    letters[j] = 'a'; // 있는 순간 다른 문자로 변환
                    break;
                }
            }

            int count = 0;
            for (int j=0; j<4; j++) {
                if (letters[j] == 'a') { // 변환한 a문자가 존재하는지 체크 후 count+=1
                    count++; 
                }
            }

            // count의 개수가 현재 for 반복문의 순번(+1)과 같지 않으면 다른 숫자가 있다는 뜻
            if (count != i+1) {
                isGoodDay = false;
                break;
            }
        }

        System.out.println(isGoodDay ? "yes" : "no");
    }
}

Ranking(순위)

반응형