티스토리 뷰

문제 링크

 

프로그래머스

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

programmers.co.kr

문제 풀이

def solution(n, arr1, arr2):
    for i in range(n):
        arr1[i] = toBinary(arr1[i], n)
        arr2[i] = toBinary(arr2[i], n)

    answer = []
    for i in range(n):
        row = ""
        for j in range(n):
            if arr1[i][j] == 0 and arr2[i][j] == 0:
                row += " "
            else:
                row += "#"
        answer.append(row)
    return answer

def toBinary(num, n):
    binary = []
    digit = [2**(n-i-1) for i in range(n)]
    for i in digit:
        binary.append(num // i)
        num %= i
    return binary

비밀지도 입출력 테스트

*key point: 십진수를 리스트 형태의 이진수로 변환하는 함수를 정의한다. 이를 활용하여 주어진 두 배열을 2차원 배열로 변환하고 반복문과 조건문을 이용하여 주어진 조건에 맞는 결과를 새로운 리스트로 출력한다.

 

*comment: 다음 함수를 활용하면 더 간단한 풀이가 가능하다.

  • bin() 함수: 정수형 자료를 이진수로 변환하여 문자열로 나타내주는 함수. 단순 변환 뿐 아니라 &, |, ~, ^, <<, >> 등을 이용한 다양한 연산을 동시에 가능하게 한다.
  • rjust(), center(), ljust() 함수: 오른쪽, 중앙, 혹은 왼쪽으로 문자열을 정렬하여 특정 길이의 문자열로 출력하는 함수. 이때 빈 곳을 원하는 문자로 채울 수 있다.

*Hansol Eom, 열혈코딩님의 풀이

def solution(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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함