liontkdwls   4년 전

문제의 규칙을 잘 못 이해하고 있는 걸까요..

20까지의 걸린 횟수를 살펴보면               

1 1
2 2
3 3  4 3  
5 4 6 4  
7 5  8 5  9 5
10 6 11 6 12 6
13 7 14 7  15 7  16 7 
17 8   18 8  19 8  20 8

     이렇게 증가하는 방식이라 아래와 같이 코드를 작성하였습니다!!

inc5025   4년 전

일단 틀린 이유는 12번째 줄에서 j가 9까지만 for문이 돌기 때문입니다. x, y값이 2의 31승까지 치솟으니 큰 수가 들어온다면 아마 정답을 구하기 전에 for문을 빠져나올 겁니다.

다만 j를 적당히 큰 수로 놓고, 특정 조건을 만족하면 for문을 빠져나가게 만든다고 해도 시간초과가 날 겁니다.

만약 x가 0이고, y가 231-1이라면 count++ 혹은 value++은 10억번 이상 실행될텐데 그건 너무 많은 숫자입니다.

위의 방식처럼 루프를 돌며 일일히 계산해가며 답을 찾기보다는 a와 b가 입력으로 들어왔을때, 바로 답을 계산해내는 수식을 세워주는 것이 나아보입니다.

liontkdwls   4년 전

반복문을 쓰지 않아야 풀리는 문제였군요.. 감사합니다. 

제한 시간이 1초이니 큰 수를 넣는 경우에 반복문보다는 말씀하신대로 즉각적으로 계산하는 수식을 세워야겠네요

답변 정말 감사합니다!

댓글을 작성하려면 로그인해야 합니다.