심심풀이2010. 5. 6. 23:15
프로그램 명: 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
Posted by 멍충한아싸

댓글을 달아 주세요

  1. makecode

    코드를 보니 scanf를 for문 밖에 해서 1글자 차이 나네요 ㅠ.ㅠ)!

    2010.06.02 01:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 헉 makecode 님이시다 ㅎㄷㄷ

      님 코드보고 감탄한게 한두개가 아니에용 ㅋㅋ

      대단하신듯

      2010.06.03 21:12 신고 [ ADDR : EDIT/ DEL ]