https://gall.dcinside.com/board/view/?id=programming&no=2046676
입력값이 n 일때 출력값을 m이라 하자ㅇㅅㅇ
만약 n이 5라면 m은 2가 되겠지ㅇㅅㅇ
이걸 n -> m 이라 하면ㅇㅅㅇ
2n -> 2m 이 된다ㅇㅅㅇ
왜냐면ㅇㅅㅇ
입력값 n일때 출력이 m이란 말은 n개의 수열에서 m번째 숫자가 정답이란 말임ㅇㅅㅇ
역시 n이 5일때 예시를 들면ㅇㅅㅇ
1 2 3 4 5 에서 2번째 숫자가 정답이란 말이고ㅇㅅㅇ
2n인 10에서 루프를 한번 돌면ㅇㅅㅇ
2 4 6 8 10 이 되며 위의 수열에서 2를 곱한 수열이 됨ㅇㅅㅇ
여기서 두번째 숫자가 정답이니 m은 4가 됨ㅇㅅㅇ
그럼 홀수를 찾아서 2n-1 일땐 어떻게 될까ㅇㅅㅇ
여기서도 n에 5를 넣으면 9이고 루프를 한번 돌면ㅇㅅㅇ
9 2 4 6 8 이 되고 두번째인 2가 정답이 됨ㅇㅅㅇ
여기서 2n-1 일 경우 2n-1 인 숫자가 맨 앞에 가서 수열이 뒤로 한칸씩 밀리는걸 볼수있음ㅇㅅㅇ
따라서 2n-1 -> 2m - 2 가 됨ㅇㅅㅇ
그리고 최소 입력값인 2를 보면 2 -> 2인데ㅇㅅㅇ
2n-1 -> 2m-2 에서 m에 2를 넣으면 2가 됨ㅇㅅㅇ
2n -> 2m 에서 최대 값은 두배씩 되고ㅇㅅㅇ
따라서 n이 증가할 수록 m은 규칙성을 띄는데ㅇㅅㅇ
이 수열은 2부터 2^x 까지 2의 등차수열을 가짐ㅇㅅㅇ
천재 ㄷㄷㄷㄷ
이해함
똑똑하네요