프로그램 명: dump
제한시간: 1 초
정수를 입력으로 받아 이 정수가 메모리에 저장된 이진수 형태로 출력하는 프로그램을 작성하시오.
예를들어 , 12 가 입력으로 주어진다면
00000000 00000000 00000000 00001100-1 인 경우 메모리에 저장된 형태는
11111111 11111111 11111111 11111111-1 이 왜 이렇게 표현되는지는 문제 rms 참고.(사실 이 문제를 푸는데는 왜 그렇게 되어 있는지를 몰라도 관계는 없다.)
입력
10 진수 n 이 입력으로 주어진다. n 이 메모리에 저장된 내용을 이진수로 출력한다.n 은 정수 범위내( -2^31 ~ 2^31-1 ) 의 수이다.
출력
8 비트씩 단위로 공백을 주어 출력한다.입출력 예
입력 3 출력 00000000 00000000 00000000 00000011 입력 -1 출력 11111111 11111111 11111111 11111111
http://220.81.36.44/30stair/dump/dump.php?pname=dump
이 문제이다.
이렇게 풀었다.
처음 이문제를 풀었을때는 딱 재귀로 풀어야 겠다 하여 재귀로 풀었으나
재귀로는 아무리 줄여봐도 글자수 70대가 나올수가 없을 듯 했다.
이진수를 얻어내려는 변수를 쉬프트해가면서 MSB 나 LSB를 얻어내고
그것을 기록하는 생각을 했는데
문득 든 생각이 왜 변수값을 꼭 바꾸고 저장해야 하나? 이 생각이 들면서
makecode님이 어떻게 구현했겠는지 눈치채게 되었다. 아마 비슷하거나 똑같을것 같다.
한글자 차이인데 변수 선언 때문인듯 하다...
a,n=32;main(){} // 15글자
n=32;main(a){} // 14글자
'심심풀이' 카테고리의 다른 글
pow 함수 고찰 글을 보고.. (0) | 2011.03.27 |
---|---|
[더블릿] prefix 계산기 (0) | 2010.06.04 |
더블릿 dump 문제 (2) | 2010.05.06 |
더블릿 (0) | 2010.04.04 |
xy평면 (2) | 2010.04.03 |
[bits] 산술 (0) | 2010.03.03 |
댓글을 달아 주세요
코드를 보니 scanf를 for문 밖에 해서 1글자 차이 나네요 ㅠ.ㅠ)!
2010.06.02 01:49 [ ADDR : EDIT/ DEL : REPLY ]헉 makecode 님이시다 ㅎㄷㄷ
2010.06.03 21:12 신고 [ ADDR : EDIT/ DEL ]님 코드보고 감탄한게 한두개가 아니에용 ㅋㅋ
대단하신듯