티스토리 뷰

https://app.codility.com/programmers/lessons/3-time_complexity/frog_jmp/

 

FrogJmp coding task - Learn to Code - Codility

Count minimal number of jumps from position X to Y.

app.codility.com

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
    public int solution(int X, int Y, int D) {
        // write your code in Java SE 8
 
      int cnt = 0;
        while(X <= Y) {
            X += D;
            cnt++;
        }
        return cnt;
    }
 
}  
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

처음엔 너무 쉬운거 아냐?? 하고 이렇게 풀었다.

하지만 역시나 첫 코드는 100%가 아닌 11%...

위 코드의 경우, X == Y 인 경우를 고려하지 않게 되고 값이 커질 경우 time out이 나서 효율성이 꽝인거 같다.

그래서 루프를 안쓰는 방법으로 다시 로직을 짰다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public int solution(int X, int Y, int D) {
        // write your code in Java SE 8
 
      int cnt = 0;
 
      if((Y-X) % D > 0) {
           cnt = 1;
       }
       cnt += (Y - X) / D;
 
       return cnt;
    }
 
}  
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

역시 루프는 시간복잡도를 잡아먹는 괴물같다

댓글