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}')
'Coding Test > SWEA' 카테고리의 다른 글
| [Advanced] 3. 탐욕 알고리즘 - 문제편 (삼성 sw expert 5201 5202 5203) (0) | 2021.07.22 |
|---|---|
| [Advanced] 3. 탐욕 알고리즘 - 이론편 (0) | 2021.07.22 |
| [Advanced] 2. 완전 검색 - 문제편 (삼성 sw expert 5188 5189) (0) | 2021.07.21 |
| [Advanced] 2. 완전 검색 - 이론편 (0) | 2021.07.20 |
| [Advanced] 1. 시작하기 - 이론편 (0) | 2021.07.19 |
댓글