비밀지도

yongju·2022년 11월 2일
0

Programmers

목록 보기
2/23
post-thumbnail





문제 정리
사용한 파라미터:
n : 지도의 크기
arr1, arr2 : 2개의 지도 parameters
cal : 2개의 지도 비트연산하여 cal에 저장. 10진수로 채워짐(전체 지도)
answer : 이진수로 변환된 전체지도 저장됨(list)

사용기능 :
비트연산(|) : 10진수의 비트연산 바로 가능.
bin(number) : 이진수를 문자열로 반환
string.zfill(number) : number의 수만큼 string앞부터 0채워줌
string.replace("old","new") : old를 new로 대체

코드

def solution(n, arr1, arr2):
    cal=[]
    
    for i in range(n):
        cal.append(arr1[i]|arr2[i]) #비트연산(10진수)
        
    answer=[bin(x) for x in cal] #2진수로 변환

    for i in range(n):
        answer[i]=answer[i][2:].zfill(n)
        answer[i]=answer[i].replace("0"," ").replace("1","#")
    return answer

코드 설명

    for i in range(n):
        cal.append(arr1[i]|arr2[i]) #비트연산(10진수)

| 연산자 사용하여 10진수끼리의 비트 연산후 cal에 append하여 10진수로 채워진 지도만듦.

answer=[bin(x) for x in cal] #2진수로 변환

bin()사용하여 2진수의 문자열로 이루어진 전체지도 만듦("0b1110" 형식의 string들어있음)

    for i in range(n):
        answer[i]=answer[i][2:].zfill(n)
        answer[i]=answer[i].replace("0"," ").replace("1","#")

전체 n크기의 지도를 맞춰주기 위해 0을 붙여주는 zfill()사용
0을 공백으로, 1을 #으로 바꾸기 위해 replace 사용하여 다시 전체 지도인 answer에 넣어줌.

profile
AI dev

0개의 댓글