변환

PJPJ·2026년 2월 21일

Coding_Test

목록 보기
6/8

문자↔숫자

1.문자열 숫자를 정수/실수로 변환

  • 문자열로 표현된 숫자를 실제 숫자 타입으로 변환할 때는 int()나 float() 함수를 사용합니다.
# 문자열을 정수로
num_str = "123"
num = int(num_str)  # 123

# 문자열을 실수로
float_str = "123.45"
num = float(float_str)  # 123.45

2.문자를 아스키/유니코드 값으로 변환

  • 개별 문자를 유니코드 숫자 값으로 변환할 때는 ord() 함수를 사용합니다.
print(ord('a'))  # 97
print(ord('A'))  # 65
  • 반대로 숫자를 문자로 변환하려면 chr() 함수를 사용합니다.
print(chr(97))  # 'a'
print(chr(65))  # 'A'

3.소문자 or 대문자 판별

  • islower() or isupper() 사용.
  • 숫자/기호/공백은 검사 대상이 아니라서 "hello 123".islower()는 True가 될 수 있습니다.
a = 'd'
b = 'G'
a.islower() # True
b.isupper() # True

2진수↔10진수 & 문자열↔리스트

10진수->2진수

  1. bin() 함수 (가장 기본)
    가장 간단한 방법으로, 결과는 문자열이며 앞에 2진수를 뜻하는 접두어 0b가 붙습니다.
num = 10
binary = bin(num)
print(binary)  # '0b1010'
  1. format() 또는 f-string (접두어 없이)
    0b 없이 순수 2진수 숫자만 필요할 때 사용합니다. 알고리즘 문제 풀이에서 자주 쓰입니다.
num = 10

# format 함수 사용 ('b'는 binary를 의미)
print(format(num, 'b'))    # '1010'

# f-string 사용 (추천)
print(f"{num:b}")          # '1010'
  1. 자릿수 맞춰서 출력하기 (Padding)
    2진수로 변환했을 때 특정 자릿수(예: 5자리)를 맞춰야 한다면 포맷팅을 사용합니다. 빈 자리는 0으로 채워집니다.
num = 5

# 5자리로 맞추고 빈 곳은 0으로 채움 ('05b')
print(f"{num:05b}")  # '00101'

f-string 내부에서 변수 n을 사용하려면 중괄호 {n}을 한 번 더 감싸주면 됩니다.

num = 5
n = 5  # 자릿수 (변수)

# {n}이 먼저 5로 바뀌어 -> {num:05b} 처럼 동작함
result = f"{num:0{n}b}"

print(result)  # 00101

참고: 반대로 2진수 문자열을 다시 정수로 바꿀 때는 int('1010', 2)를 사용하면 됩니다.

문자열->리스트

  1. list() 함수 사용 (한 글자씩 분리)
    문자열의 모든 글자를 하나씩 떼어 리스트의 요소로 만듭니다. 질문하신 '1111' →\rightarrow ['1', '1', '1', '1']에 정확히 해당하는 방법입니다.
s = '1111'
result = list(s)
print(result)  # ['1', '1', '1', '1']

만약 숫자로 변환하고 싶다면 map을 함께 사용하면 됩니다.

result_int = list(map(int, s))
print(result_int)  # [1, 1, 1, 1]
  1. split() 메서드 사용 (특정 기준 분리)
    공백이나 쉼표(,) 등 특정 구분자를 기준으로 나눌 때 사용합니다. 구분자 없이 사용하면 공백을 기준으로 나눕니다.
s = "Hello World"
result = s.split()
print(result)  # ['Hello', 'World']

리스트->문자열, 2진수->10진수

단계별 방법

  1. 리스트 →\rightarrow 문자열 (join)
    숫자 리스트를 문자열로 합치려면 먼저 각 숫자를 문자열로 변환해야 합니다. map과 join을 사용합니다.
  2. 문자열(2진수) →\rightarrow 10진수 (int)
    int(문자열, 2)를 사용하면 2진수 문자열을 10진수 정수로 바꿀 수 있습니다. robotai.tistory

코드 예제

num_list = [1, 1, 1]

# 1단계: 숫자 리스트 -> 문자열 '111' 변환
# map(str, num_list)로 각 숫자를 문자로 바꾼 뒤 join으로 합침
binary_str = "".join(map(str, num_list))
print(binary_str)  # '111'

# 2단계: 2진수 문자열 -> 10진수 변환
decimal_num = int(binary_str, 2)
print(decimal_num) # 7

한 줄로 줄이기

decimal_num = int("".join(map(str, [1, 1, 1])), 2)

이 방식은 리스트 안의 숫자가 0과 1로만 이루어져 있을 때 유용합니다.


0개의 댓글