[Algorithm🧬] 비밀 지도

또상·2021년 12월 16일
0

Algorithm

목록 보기
12/133
post-thumbnail

문제 / 풀이.py

import re

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n):
        res = arr1[i] | arr2[i] # or
        res = str(bin(res))[2:] # 0b 제거
        res = res if len(res) == n else ''.join(['0' for _ in range(n-len(res))]) + res # n자리가 아니면 n자리로 만들어줌
        # res = '0' * (n - len(res)) + res
        res = re.sub('1', '#', res) #정규표현식으로 1은 #
        res = re.sub('0', ' ', res) #0은 공백으로
        answer.append(res)
        
    return answer

선생님이 정규표현식 문제라고 힌트를 주시기도 했지만!!! 깔끔하게 잘 푼 것 같다. 안그랬으면 또 for문 돌릴 생각만 했을듯.

  • 처음 알게된 문법 : bin(숫자) 는 숫자를 이진수로 만들고 0b1001 형태의 문자열을 반환해준다.
function (n, arr1, arr2) {
    answer = []
  
    const fillZero = (n, arr) => { return '0'.repeat(n - arr.length) + arr }
    
    for (let i = 0; i < n; i++) {
        let res = fillZero((arr1[i]|arr2[i]).toString(2)).replace(/1/g, '#').replace(/0/g, ' '));
        answer.push(res));
    }
}

0125 python

res = res if len(res) == n else ''.join(['0' for _ in range(n-len(res))]) + res

다시 풀어봤는데 위의 부분만 아래처럼 바뀌었다.

res = res if len(res) == n else ('0' * (n-len(res))) + res
profile
0년차 iOS 개발자입니다.

0개의 댓글