https://school.programmers.co.kr/learn/courses/30/lessons/17681

 

프로그래머스

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

programmers.co.kr

 

비트연산과 이진수를 구하는 법만 알면 쉽게 풀리는 문제입니다.

 

arr1과 arr2의 수에서, 두 이진수를 겹친다는것은 | , 즉 or 비트연산을 한다는 뜻입니다.

or 비트 연산으로 수를 바꿔주고 이진수를 구하듯 나누어 주면 됩니다. (위 코드)

또는 1을 shift 해가면서 & and 비트연산으로 해당 위치에 비트가 있는지 체크해주면 됩니다. (아래 코드)

 

구현에 큰 차이는 없고 만들어진 배열을 뒤집어서 출력만 하면 됩니다.

또는 문자열로 덧붙여 만들고 slice로 뒤집어줘도 됩니다.

 

 

def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        arr1[i] = arr1[i] | arr2[i]

    for i in range(n):
        num = n
        temp = []
        while num > 0:
            if arr1[i] % 2 == 1:
                temp.append("#")
            else:
                temp.append(" ")

            arr1[i] //= 2
            num -= 1
            
 #         temp = ""
#         while num > 0:
#             if arr1[i] % 2 == 1:
#                 temp += "#"
#             else:
#                 temp += " "

#             arr1[i] //= 2
#             num -= 1
#         answer.append(temp[::-1])

        answer.append(''.join(temp.__reversed__()))

    return answer

 

 

def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        arr1[i] = arr1[i] | arr2[i]

    for i in range(n):
        num = 1
        temp = []
        for j in range(n):
            if arr1[i] & (1 << j) != 0:
                temp.append("#")
            else:
                temp.append(" ")
                
#         temp = ""
#         for j in range(n):
#             if arr1[i] & (1 << j) != 0:
#                 temp += "#"
#             else:
#                 temp += " "
        
#         answer.append(temp[::-1])
        
        answer.append(''.join(temp.__reversed__()))

    return answer
728x90

+ Recent posts