본문 바로가기
> 알고리즘 문제 풀이/프로그래머스

lv1-[1차] 비밀지도 (python, 파이썬)

by bky373 2020. 10. 24.
""" 1번: 나의 풀이 """
def solution(n, arr1, arr2):
    secret_map = list(map(lambda x: format(x[0]|x[1], 'b'), zip(arr1, arr2)))
    answer = []
    for s in secret_map:
            tmp = ''
            while len(s) < n:
                s = '0'+s
            for b in s:
                if b == '1':
                    tmp += '#'
                else:
                    tmp += ' '
            answer.append(tmp)
    return answer





""" 2번: 다른 사람의 풀이(rjust, replace 활용) """
def solution2(n, arr1, arr2):
    answer = []
    for i in range(n):
        a = str(bin(arr1[i]|arr2[i])[2:]).rjust(n, '0').replace('1','#').replace('0',' ')
        answer.append(a)
    return answer





""" 3번: 다른 사람의 풀이(zfill 활용) """
solution = lambda n, arr1, arr2: ([''.join(map(lambda x: '#' if x=='1' else ' ', "{0:b}".format(row).zfill(n))) for row in (a|b for a, b in zip(arr1, arr2))])



- 확인하기!
  - rjust, replace, zfill 등의 함수를 익혔다. 필요할 때 자주 써먹자!
     - str.rjust(width, fillchar): fillchar를 "width-len(str)"만큼 채워준다 (2번 풀이 참고)
     - str.replace(old, new): 문자열 내 old char를 new char로 바꿔준다 (2번 풀이 참고)
     - str.zfill(n): 문자열 앞으로 '0'(zero)를 "n-len(str)"만큼 채워준다 (3번 풀이 참고)
  - "{0:b}".format(int number): number를 2진수 문자열로 변환해준다
    - 자매품: "정수: {0:d}, 8진수: {0:o}, 16진수: {0:x}"

댓글