728x90
반응형
1. 문제 설명
2. 풀이과정
각 정수 배열을 2진수로 변환하고 각 2진수를 각 자리별로 비교하여 하나라도 벽이면 벽으로 구현하니 시간이 초과되었다. 하여 각 정수 배열의 각 원소별로 추출하여 각 자리를 비교하여 하나라도 벽이면 벽으로 저장하고 역순으로 출력한 결과를 저장하도록 구현하였다.
- 정수 배열의 원소의 개수는 지도의 한 변의 길이와 동일하므로 지도의 한 변의 길이만큼 반복한다. for i in range(n)
- 각 변마다 결과를 저장할 리스트를 생성한다. li = list()
- 각 배열의 원소를 이진수로 변환했을 때 지도의 한 변의 길이와 동일한 자릿수의 이진수로 구성된다. 따라서 지도의 한 변의 길이만큼 반복한다. for _ in range(n)
- 만약 각 배열의 원소를 2로 나눈 나머지를 or 연산으로 비교한 결과가 1이면(두 결과 중 하나라도 1이면) 벽이므로 벽을 추가한다. if ((arr1[i] % 2) or (arr2[i] % 2)): li.append('#')
- 반면에 비교한 결과가 0이면 (두 결과 모두 0이면) 공백을 추가한다. else: li.append(' ')
- 두 값을 2로 나눈 몫의 결과로 새로 저장한다. arr1[i] //= 2 arr2[i] //= 2
- 최종 지도의 결과를 저장한 리스트는 거꾸로 저장되어 있기에 역순으로 바꿔준다. li.reverse()
- 정답에 저장할 문자열 변수를 생성하고 초기화한다. String = ''
- 지도의 결과를 하나씩 추출하여 문자열에 추가한다. for j in li: String += j
- 최종 지도의 각 변의 결과 문자열을 정답에 추가한다. answer.append(String)
반응형
3. 소스코드
def solution(n, arr1, arr2):
answer = []
for i in range(n):
li = list()
for _ in range(n):
if ((arr1[i] % 2) or (arr2[i] % 2)):
li.append('#')
else:
li.append(' ')
arr1[i] //= 2
arr2[i] //= 2
li.reverse()
String = ''
for j in li:
String += j
answer.append(String)
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 예상 대진표 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.10 |
---|---|
[프로그래머스] K번째수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.10 |
[프로그래머스] 문자열 내 마음대로 정렬하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.09 |
[프로그래머스] 숫자 문자열과 영단어 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] 카펫 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] 영어 끝말잇기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] 짝지어 제거하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |
[프로그래머스] 크기가 작은 부분 문자열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |