자바는 기본적으로 프로그램을 켰다 끄는 데에만 그 88MS 정도가 걸립니다. 이 문제는 제한이 너무 작아서 실제 프로그램의 본문은 1MS보다 한참 아래에 끝이 날 수 있고, 그보다는 그 프로그램을 켜고 끄는 데에 걸리는 시간의 오차에 의해 4MS의 차이가 났을 가능성이 높습니다.
자바 프로그램의 수행 속도를 간략하게 제시해 드리자면, 1초에 약 1억 개의 문장을 실행할 수 있습니다. 물론 그 문장이 실제로 얼마나 무거운지에 따라서 달라지기는 합니다. 그래서 N=50 정도로는 O(N)이든, O(N^2)이든 거의 아무런 차이가 없습니다. 심지어 O(N^3)이라도 체감할 수 없을 정도로 짧은 시간이 걸립니다.
onsil 5년 전
궁금한 코드는 총 3개 입니다.
첫번째 코드는 문제에 설명된 대로 구현한 코드입니다.
이 코드의 실행결과는 88MS가 나왔습니다.
두번째 코드는 첫번째 코드의 8~9번 줄을 줄인것입니다. 나머지 코드는 동일합니다.
이 코드의 실행결과는 92MS 입니다.
첫번째 궁금증이 여기서 나옵니다.
첫번째 코드는 배열을 선언하고, 또 그 배열을 돌면서 값을 새로 정의해준것이고
두번째 코드는 배열을 선언과 동시에 원하는 값으로 선언해준것인데
왜 두번째 코드가 시간이 더 오래걸린 것인지 이해가 되지 않습니다...ㅠㅠ
세번째 코드는 문제에서 설명된대로 코딩한게 아니라 야바위 방식으로 코딩을 했습니다.
이 코드의 실행시간은 88MS로 첫번째 코드와 실행시간이 같습니다.
두번째 궁금증이 여기서 나옵니다.
첫번째 코드는 매 컵을 옮길때마다 getPos()메소드가 두번씩 실행되서 배열 전체 탐색을 두번씩 해야하고
세번째 코드는 마지막에 공이 들어간 컵을 찾을 때 딱 한번 배열 전체 탐색을 합니다.
그래서 제 생각으로는 세번째 코드가 첫번째 코드보다 당연히 실행시간이 훨씬 빨라야한다고 생각하는데요...
똑같이 나와서 당황스럽네요..
이 두가지 궁금증을 해결하고 싶습니다...