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
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 131127. 할인 행사 (Lv.2) (0) | 2022.10.10 |
---|---|
[Python] 프로그래머스 131130. 혼자 놀기의 달인 (Lv.2) (0) | 2022.10.10 |
[Python] 프로그래머스 17682. 다트 게임 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 131128. 숫자 짝꿍 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 12921. 소수 찾기 (Lv.1) (0) | 2022.10.10 |