Java/Java 알고리즘

백준 10212번 Mystery JAVA 구현해보기

kimc 2021. 12. 5. 11:43

```

백준 10212번 Mystery JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 10212번 Mystery 풀이

https://www.acmicpc.net/problem/10212

 

10212번: Mystery

"Yonsei"혹은 "Korea"(이번에는 연세대를 앞에 해드렸습니다.)중 하나를 출력한다. 따옴표는 출력하지 않는다.

www.acmicpc.net

 

 

 

백준 10212번 Mystery는 

난이도 브론즈 등급의 문제로서

 

"Yonsei"혹은 "Korea"를 동일한 확률로 랜덤 하게 출력해주면 되는 문제입니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


"이 문제를 올바르게 보려면 자바스크립트가 필요합니다."라는 힌트를 보고

 

일단 문제 페이지의 HTML 소스코드를 봅니다.

 

id 값을 보고 자바스크립트를 찾습니다.

 

확인을 해보니 1초에 한번씩 카운트 값을 증가시켜 3항 연산을 해서

Korea와 Yonsei를 돌아가면서 출력해주고 있습니다.

 

 

동일한 방법을 자바로 구현해서

1초에 한번씩 각 문구를 출력해보았습니다.

// 시간초과 코드
// 1차 시도

import java.util.Timer;
import java.util.TimerTask;

public class Main {
    public static void main(String[] args) throws Exception {

        new Timer().scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                String result = "Korea";
                if (myTime % 2 == 0) {
                    result = "Yonsei";
                }
                myTime++;
                System.out.println(result);
            }
        }, 0, 1000);

    }

    static int myTime = 0;
}

틀렸습니다.

 

랜덤값을 받아서

출력해주었습니다.

답안의 데이터 셋이 다를 수 있다는 생각에

여러 번 제출해 보았고

동일 코드도 랜덤 값에 따라서 답이 다르게 나오는 것을 알 수 있습니다.

public class Main {
    public static void main(String[] args) throws Exception {

        final int minVal = 0;
        final int maxVal = 1;
        int myTime = minVal + (int) (Math.random() * ((maxVal - minVal) + 1));

        String result = "Korea";
        if (myTime % 2 == 0) {
            result = "Yonsei";
        }
        System.out.print(result);
    }
}

 

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 

참조 및 인용

 


 

728x90