[C언어 코드업 문제풀이] CodeUp 1416 : 2진수 변환

코드업 1416번 2진수 변환 문제 풀이 해답입니다.

 

1. 문제 설명

 

어떤 10진수 n 주어지면 2진수로 변환해서 출력하시오.

 

)

10    ----->  1010

0    ----->  0

1    ----->  1

2    ----->  10

1024    ----->  10000000000

 

2. 입력

 

10진수 정수 n이 입력된다.

(n은 21억이하의 임의의 수이다.)

 

3. 출력

 

2진수로 변환해서 출력한다.

 

4. 입력 예시

 

7

 

5. 출력 예시

 

111

 

6. 문제 풀이

 

#include<stdio.h>
 
 
int main(){
    
    int i_num;
    scanf("%d",&i_num);
    
    int bin_arr[1000= {};
    int i_Cnt = 0;
    
    for(int i=0; i_num > 0; i++ ){
        
        bin_arr[i] = i_num % 2;
        i_num /= 2;
        i_Cnt++;
    }
    
    i_Cnt -= 1;
    if(i_Cnt < 0){printf("%d",bin_arr[0]);}
    else{
        for(int j = i_Cnt; j>=0; j--){
            
            printf("%d",bin_arr[j]);
        }
    }
 
    
 
    return 0;
    
 
}
 
 

 

   for(int i=0; i_num > 0; i++ ){

        

        bin_arr[i] = i_num % 2;

        i_num /= 2;

        i_Cnt++;

    } 

를 통해 2진수를 구할 수있습니다.

 

만약 5를 이진수로 변환하면  101 가 되는데

 

5%2의 나머지 1이 남고 입력된 5는 /2를 해서 2가됩니다.

그 후 2%2는 0이되고 2/2는 1, 1%2의 나머지는 1 i_num > 0 이므로 101로 반복이 종료됩니다.

 

101은 거꾸로 해도 101이지만 배열에는 [1] [00] [100] 이 들어있으므로 반대로 출력해주어야 합니다.

댓글()