https://school.programmers.co.kr/learn/courses/30/lessons/17681
1. 내가 작성한 코드
def solution(n, arr1, arr2):
new3 = []
new4 = []
for i in arr1:
new = list(bin(i)[2:]) #지도1 이진수
for i in range((n-len(new))):
new.insert(0,'0')
new3.append(new)
for i in arr2:
new2 = list(bin(i)[2:]) #지도2 이진수
for i in range((n-len(new2))):
new2.insert(0,'0')
new4.append(new2)
answer = []
for j in range(n):
c = ''
for k in range(n):
if (new3[j][k] == '1') or (new4[j][k] == '1'):
c += "#"
else:
c += ' '
answer.append(c)
return answer
1. bin 함수를 사용하면 앞에 0b가 붙어서 나오기 때문에 슬라이딩을 이용해서 제거해줬다.
ex) print(bin(9)) #0b1001 => 1001
2. n의 크기에 맞게 수를 조정하기 위해 insert 0으로 모자란 수만큼 0을 삽입해줬다.
3. 두 list를 비교해서 둘 중 하나라도 1이면 #을, 둘 다 공백이면 ' '을 삽입해줬다.
2. 비트연산자를 이용한 코드
def solution(n, arr1, arr2):
answer = []
for i, j in zip(arr1, arr2):
new = str(bin(i|j)[2:])
new = new.rjust(n,'0')
new = new.replace('1','#')
new = new.replace('0',' ')
answer.append(new)
return answer
1. zip 함수를 통해 arr1과 arr2의 원소를 묶어준다.
2. i와 j를 비트연산자를 이용해 이진수를 바꿔준 후 슬라이딩을 이용해 0b를 없애준다.
3. rjust로 오른쪽 정렬해준 후 모자란 부분은 0을 넣는다.
4. 1과 0을 각각 #과 공백으로 교체한다.
3. 알게된 점
- 문자열.rjust(전체 자리 숫자, 공백이 있을 경우 공백을 채울 텍스트) + ljust도 가능 # 문자열에서 사용 가능
- zip 함수를 통해 다른 list에서 원소를 가지고 올 수 있음 #iterable한 객체에서 사용 가능
- replace 활용하기 !
'🔅코딩테스트 공부🔅 > ❗프로그래머스(Lv.1)' 카테고리의 다른 글
[프로그래머스] Level1 옹알이(2) (python) (0) | 2023.02.09 |
---|---|
[프로그래머스] Level1 기사단원의 무기(with python) (0) | 2023.02.08 |
[프로그래머스] Level1 K번째 수(with python) (0) | 2023.02.07 |
[프로그래머스] Level1 체육복(with python) (0) | 2023.02.07 |
[프로그래머스] Level1 최대공약수와 최소공배수(with python) (0) | 2023.02.02 |
댓글