반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(n, arr1, arr2):
answer = []
for i in range(n):
arr1[i] = format(arr1[i], 'b').zfill(n)
arr2[i] = format(arr2[i], 'b').zfill(n)
for i in range(n):
hap = ''
for j in range(n):
if arr1[i][j] == arr2[i][j] and arr1[i][j] == '0':
hap += " "
if arr1[i][j] == '1' or arr2[i][j] == '1':
hap += "#"
answer.append(hap)
return answer
1️⃣ arr1과 arr2의 모든 원소를 이진수화 한다. zfill함수를 이용해 각 자리수를 n자리로 맞춘다.(공백 부분에는 0을 추가)
2️⃣ 이중 for문을 돌면서 arr1과 arr2의 문자열을 하나씩 탐색한다. 각 자리의 두 수가 0으로 동일하면 hap 변수에 공백을 추가하고, 두 수 중 하나라도 1이면 벽이므로 #을 추가한다.
3️⃣ 완성된 hap을 answer 배열에 추가한다.(한 줄 완성)
4️⃣ 위의 1️⃣ ~ 3️⃣을 n번 반복한다.
다른 풀이 방법
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
🔸 a12 = str(bin(i|j)[2:]): i와 j를 or 연산해서 이진화한다.
🔸 a12 = a12.rjust(n,'0'): 오른쪽 정렬해서 출력, 공백 자리에는 '0'을 추가한다.
🔸 1을 #으로, 0을 공백으로 변경한 뒤 배열에 append
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 짝수 홀수 개수(코딩테스트 입문/ level 0) (0) | 2023.02.19 |
---|---|
[프로그래머스 | 파이썬] 캐시(2018 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.01.01 |
[프로그래머스 | 파이썬] H-Index(정렬/ level 2) (0) | 2022.12.30 |
[프로그래머스 | 파이썬] 카펫 (완전탐색 / level 2) (0) | 2022.12.28 |
[프로그래머스] 연습문제 "같은 숫자는 싫어"(파이썬) (0) | 2022.05.14 |
[프로그래머스] 연습문제 "가운데 글자 가져오기"(파이썬) (0) | 2022.05.05 |