https://school.programmers.co.kr/learn/courses/30/lessons/17681
풀이 - 나의 생각
코드
def solution(n, arr1, arr2):
answer = []
def to_binary(num):
digit = []
cnt = n
while cnt > 0:
digit.append(num%2)
num //= 2
cnt -= 1
return ''.join(str(x) for x in digit[::-1])
for i in range(n):
row1, row2 = to_binary(arr1[i]), to_binary(arr2[i])
row = ''
for j in range(n):
if row1[j] == "1" or row2[j] == "1":
row += "#"
else:
row += " "
answer.append(row)
return answerㅇㅇ
두 맵을 2진법으로 바꾸고
한 개씩 뜯어봅니다.
그러면서 1인 경우 벽으로 아니면 공백으로 저장해주면 끝입니다.
2진법으로 변화하는 방법은 위에서처럼
반복문을 돌려가면서 해도 되고
def to_binary(num):
return bin(num)[2:].zfill(n)
bin()을 사용해도 됩니다.
거기에 zfill을 사용한 이유는
예를 들어 1을 2진법으로 바꾸면 1입니다.
그런데 우리가 원하는 형식은 00001 이기에
zfill을 통해 비어있는 공간을 0으로 채워주는 겁니다.
위에서 while문을 n만큼 돌려주는 이유도 이와 동일합니다.
이 외에도, 2진법, 8진법, 16진법을 구하는 방법을 기본적으로 제공하는데
x = 42
print(bin(x)) # '0b101010'
print(oct(x)) # '0o52'
print(hex(x)) # '0x2a'
이렇게 쓰면 됩니다.
print(bin(x)[2:]) # '101010'
print(oct(x)[2:]) # '52'
print(hex(x)[2:]) # '2a'
그런데 기본적으로 앞에 두글자가 접두사로 붙어서
2번째 인덱스부터 꺼내오면 됩니다.
728x90
'프로그래머스 > Lv.1' 카테고리의 다른 글
PCCE 기출문제 > 데이터 분석 - Pyton, sorted, lambda (1) | 2024.12.07 |
---|---|
2018 KAKAO BLIND RECRUITMENT > 다트 게임 - Pyton, re, compile, findall, 정규식 (2) | 2024.12.06 |
월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기 - Python, combinations(조합) (0) | 2024.12.05 |
[PCCE 기출문제] 10번 / 공원 - Pyton, 누적합(Prefix Sum) (0) | 2024.12.05 |
2019 카카오 개발자 겨울 인턴십 > 크레인 인형뽑기 게임 - Python, stack (0) | 2024.12.04 |