chaos7061   5년 전

주석이 필요 없는 간단한 코드라서  주석은 달지 않았습니다. 밑이 2인 log함수를 돌려서 a에 저장한 후, a뒤에 소숫점 부분이 0 이라면 1을 출력, 아니면 0을 출력하는 방식을 썼습니다.

반례나 아이디어에서 잘못된 부분을 찾아주시면 감사하겠습니다.

46%쯤에서 틀렸습니다가 나오네요.

미리 감사합니다.

chaos7061   5년 전

코드 그대로 pypy3으로 하니 통과가 되네요... 근데 메모리초과나 시간초과가 아닌 틀렸습니다. 였는데 왜 그런걸까요 ㅠㅠ..

exqt   5년 전

log는 실수연산을 사용해서 결과가 정확하지 않을 수 있습니다

이런문제는 정수연산만으로 푸시는게 좋을듯 합니다

예 ) (a&(a-1))==0)

chaos7061   5년 전

log를 사용하지 않고 and 연산으로 구해낼 수 있는건가요? 비트(2진수)쪽으로 생각을 해봐야 하는걸까요?

exqt   5년 전

네 (a&(a-1)) 는 Least Significant Bit 가 제거된 a와 같습니다

1011 -> 1010

1100 -> 1000

1000 -> 0000

비트 하나만 제거했는데 0이 되어버리면 2^n 형태라는거죠

exqt   5년 전

다만 a > 0 를 만족해야 합니다

또는 for문을 이용하여 1인 bit를 세어주셔도 됩니다 구글에서 검색하면 대부분 이런 풀이가 나오네요

chaos7061   5년 전

상세한 풀이 정말 감사드립니다! 더 찾아봐야겠네요! 다시 한 번 감사드립니다^^

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