728x90
2022-11-28일 직접 푼 오늘의 연습 문제에 관한 내용입니다
정답률에 대한 정보는 작성일을 기준으로 기록된 것으로 추후 변동될 수 있습니다
[1차] 비밀지도(Lv.1)(정답률 68%)
추가로 알아야 할 함수/메소드
- zip()
- rjust - 우측 정렬
코드 작동 방식
1. arr1과 arr2의 10진수들을 2진수로 변환한다
1+. 이 때, bin함수를 쓸 경우 b0가 붙으므로 그만큼 슬라이싱 해준다
2. arr12라는 변수에 우측정렬 후 빈 공간을 0으로 채운다
3. arr12변수에 들어가있는 1을 #으로, 0을 공백으로 대체한다
4. answer에 최종 지도 기호 한 줄을 넣는다
5. 완성된 전체 지도를 반환한다
코드
def solution(n, arr1, arr2):
answer = [] # 최종 지도를 담을 배열
for i,j in zip(arr1,arr2): # zip 함수를 이용해 두 인덱스 동시 반복
arr12 = str(bin(i|j)[2:])
# zip함수를 이용할 시 a|b 형식으로 두 인덱스 입력
# bin함수를 이용 시 2진수로 변환됨과 동시에 앞에 b0가 붙는다
# 그렇기에 [2:]를 이용해 이를 제외한 문자열을 담는다
arr12 = arr12.rjust(n,'0')
# 배열길이 n에서 우측정렬 후 0으로 채워넣기
arr12 = arr12.replace('0',' ') # 0을 공백으로 변환
arr12 = arr12.replace('1','#') # 1을 #으로 변환
# 이 때, zip으로 묶여있기에 다음과 같은 규칙이 적용된다
# 00 -> ' ' + ' ' -> ' '
# 10, 01 -> '#' + ' ' -> '#'
# 11 -> '#' + '#' -> '#'
answer.append(arr12) # 완성된 한 줄을 answer에 추가
return answer # 완성된 보물지도 반환
유의사항
rjust와 같은 함수와 관련된 코드들은 str형태의 자료에서만 작동되기 때문에
숫자를 넣어 조작하려고 하면 임의로 str형태의 수를 사용해야 한다
ex) 1(X), '1'(O)
실행결과
728x90
'Coding Test > Programmers_Python' 카테고리의 다른 글
[Python] 오늘의 연습 문제 풀기 5편 (0) | 2022.12.01 |
---|---|
[Python] 프로그래머스 코딩테스트 입문 Day1 (0) | 2022.12.01 |
[Python] 오늘의 연습 문제 풀기 4편 (0) | 2022.11.30 |
[Python] 오늘의 연습 문제 풀기 2편 (0) | 2022.11.28 |
[Python] 오늘의 연습 문제 풀기 1편 (0) | 2022.11.26 |