본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2026] : 16진수를 2진수로 변환하기

by 조원일 2020. 3. 20.
728x90

1. 문제

https://codeup.kr/problem.php?id=2026

 

16진수를 2진수로 변환하기

입력으로 16진수가 입력되고 알파벳은 대문자로 입력된다.(각 자리는 : 0~9, A~F) (길이는 50,000글자 이내)

codeup.kr

[출처 : 코드업(https://codeup.kr/)]

이번 문제는 16진법을 2진법으로 변환하는 문제입니다.

진법 변화는 이전 글을 참고하세요.

2020/02/19 - [프로그래밍/CodeUp] - CodeUp[Q_2017] : 진법 변환

 

 

2. 해답

#include <stdio.h>
#include <string.h>

void my_htob(char c) {
	int n, arr[4] = { 0, };
	n = (int)c - 48;

	// 숫자가 아닐경우 A를 10으로 만들어줌
	if (n > 9) n -= 7;

	for (int i = 0; i < 4; i++) {
		arr[i] = (n % 2);
		n /= 2;
	}

	for (int i = 3; i >= 0; i--) {
		printf("%d", arr[i]);
	}
	printf(" ");
}

int main() {
	char arr[50001];

	scanf("%s", arr);
	
	for (int i = 0; i < strlen(arr); i++) {
		my_htob(arr[i]);
	}

	return 0;
}