본문 바로가기
Python/PS in Python

[1차] 비밀지도 : 코딩테스트 연습 / Python / Programmers / Level1

by Air’s Big Data 2020. 10. 9.

[1차] 비밀지도

 

문제는 위의 링크에서 확인이 가능하며, 입출력의 예시는 아래와 같다.

 

Example1:

#Input : n(변의 크기), arr1(지도1), arr2(지도2)
n = 5 
arr1 = [9, 20, 28, 18, 11]
arr2 = [30, 1, 21, 17, 28]

#Output 
["#####","# # #", "### #", "# ##", "#####"]

 

Example2:

#Input 
n = 6
arr1 = [46, 33, 33 ,22, 31, 50]
arr2 = [27 ,56, 19, 14, 14, 10]

#Output 
["######", "### #", "## ##", " #### ", " #####", "### # "]

 

 

Solution

def solution(n, arr1, arr2):
    answer = []
    for a1, a2 in zip(arr1, arr2):  
        a12 = str(bin(a1 | a2))[2:]  # a1 OR a2를 binary로 바꿔주는 bin() function을 통해 2진수로 바꿔준 후, 불필요한 맨 앞 2자리를 버리기 위해 string으로 변환 후 index slicing   
        a12 = a12.rjust(n,"0")  #오른쪽 정렬 후 0으로 채우기
        a12 = a12.replace('1',"#")   # 1은 #으로 replace
        a12 = a12.replace('0', " ")  # 0은 공백으로 replace
        answer.append(a12)

    return answer

 

 

 

 

#관련 개념 이해하기

(1) 내장함수 zip

name = ['a', 'b']
value = [1, 2] 

for n, v in zip(name, value): 
    print(n, v)
    
#a 1
#b 2

 

#range 사용
Number = [1,2,3,4]
Name = ['kim','park','lee','choi']
dic = {}

for i in range(len(Number)) : #Number의 원소 개수만큼의 range로 돌림
    dic[Number[i]] = Name[i] #Number의 i번째 원소의 key 값은 Name의 i번째 원소
    
print(dic)


#zip 사용
Number = [1,2,3,4]
Name = ['kim','park','lee','choi']
dic = {}

for number , name in zip(Number,Name): #number와 name을 Number,Name로 묶기
    dic[number] = name
    
print(dic)

#{1: 'kim', 2: 'park', 3: 'lee', 4: 'choi'}

 

(2) 'or'과 '|' 연산자 비교

 - 'or' 논리 연산자: True, False 연산

    (예: x or y의 경우, x가 True면 x가 반환되고, x가 False면 y값을 반환)

 - '|' 비교 연산자: bitwise 연산자 (각 자릿수를 비교하여 둘 중 하나만 1이면 1)

8 or 10
#8이 True이므로 8이 반환

8|10 #이진수 표현: 1000|1010
#0 혹은 1이 있으면 1로 대체하여 1010이므로 10이 반환


170|195 #이진수 표현: 0b10101010|0b11000011
#0 혹은 1이 있으면 1로 대체하여 0b11101011이므로 235이 반환

(3) rjustrjust(width, [fillchar])

 - 오른 쪽 정렬 후 width에서 남는 만큰 fillchar로 채우기

val = "123".rjust(5, "a")
print(val)
#aa123

val = "123".rjust(3, "a")
print(val)
#123

 

더보기

(참고 사이트)

geonlee.tistory.com/98

댓글