프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • 1/0으로 벽과 공백을 처리해야한다.
  • 비트 연산자를 활용해서 한 쪽만 벽이 있더라도 벽으로 처리했다.
def solution(n, arr1, arr2):
    arr1 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr1]
    arr2 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr2]
    
    decode = [[0] * n for _ in range(n)]
    
    for row in range(n):
        for col in range(n):
            # 어느 한쪽에 벽이 존재하는 경우
            if int(arr1[row][col]) | int(arr2[row][col]):
                decode[row][col] = "#"
            # 양쪽 전부 벽에 없는 경우
            else:
                decode[row][col] = " "
        if col == n - 1:
            decode[row] = "".join(decode[row])
    
    return decode

 

다른 사람 풀이

  • [ic]bin[/ic]에 넣기 전부터 비트 연산자 넣고 돌릴 수 있다.
  • 행 단위로 [ic]str[/ic] 처리해서 replace로 간단하게 처리했다.
def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr