while(result >= 0){
int p = result%2;
result/=2;
System.out.printf("%d",p);
}
이 부분에서 어느 순간 result = 0이 되는 순간이 있을겁니다.
그런데 while문 조건이 >=0 이므로 멈추지 못하고 계속 돕니다.
5893번 - 17배
BigInteger bi = new BigInteger("0");
bi.add(new BigInteger("2").pow(input.length()-i));
이 두 개의 구문을 봅시다.
bi.add(x)는 bi + x의 값을 리턴해줍니다! 그러나 말 그대로 리턴만 해주고, bi 자체의 값을 변경시키진 않습니다. 따라서!
bi = bi.add(x) 를 통해서 실제 bi 값을 변경시켜주셔야합니다.
마찬가지로 밑에 result.divide도 그렇습니다! ( 다만 modulus는 상관없겠죠! )
추신) 위 코드는, 시작이 0으로 뜨는 경우를 해결하지 않습니다
댓글을 작성하려면 로그인해야 합니다.
fman1335 3년 전
런타임에러가 아니니 int라서 생기는 건 아닌 거 같고
어느 부분에서 메모리 초과가 날까요?