본문 바로가기
Coding Test/SWEA

[Advanced] 1. 시작하기 - 문제편 (삼성 sw expert 5185 5186)

by 규나 2021. 7. 19.
SMALL

*SW Expert Academy - Advanced Course를 공부한 내용입니다.

이론편 : 2021.07.19 - [Coding Test/SW expert (삼성)] - [Advanced] 1. 시작하기 - 이론편

 

[Advanced] 1. 시작하기 - 이론편

*SW Expert Academy - Advanced Course를 공부한 내용입니다. 이론 알고리즘 어떠한 문제를 해결하기 위한 절차로, 유한한 단계를 통해 문제를 해결하기 위한 절차나 방법이다. 알고리즘의 복잡도 알고리

k0k1.tistory.com


# 5185. 이진수

16진수를 2진수로 변환하는 문제

이론편에서 공부한 비트연산자를 통해 16진수를 2진수로 변환함
16진수의 A~F의 수는 딕셔너리를 이용해 10진수로 변환함

N, txt = map(str, input().split())
transformed = []

for i in range(int(N)):
	N = txt[i]

	if N.isdigit():
		N = int(txt[i])
	else:
		dict_n = {'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15} # A~F는 딕셔너리로 처리
		N = dict_n[N]

	binary = [0,0,0,0] # 16진수 -> 2진수는 네자리 비트가 필요하므로
	for j in range(4): 
	if N & (1<<j): # 비트 단위로 확인
		binary[3-j] = 1
	transformed.extend(binary)

result = ''.join(map(str, transformed)) # int 리스트를 합칠 때 map을 활용해 str타입으로 변환
print(f'#{test_case} {result}')

 


# 5186. 이진수2

10진수 실수를 2진수로 변환하는 문제
ex) N = 0.625
0.101 (이진수)
= 1*2-1 + 0*2-2 + 1*2-3
= 0.5 + 0 + 0.125
= 0.625

N = float(input())

dec = []
cnt = 0
while 1:
	cnt += 1
	N *= 2
	if N>1:
		dec.append(1)
		N -= 1
	elif N==1:
		dec.append(1)
		result = ''.join(map(str, dec)) # int 리스트를 합칠 때 map을 활용해 str타입으로 변환
		break
	else:
		dec.append(0)

	if cnt == 16:
		result = 'overflow'
		break

print(f'#{test_case} {result}')

 

댓글