728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 풀이 애니메이션이 함정이다. 풀이 애니메이션처럼 배열의 값을 모두 구하여 해결하면 시간이 많이 걸리고 메모리도 많이 사용하게 된다. 하여 바로 정답 값만 저장할 수 있도록 해결해 보았다.
left와 right 값을 매개변수로 입력받게 되는데, 이를 각 행과 열의 최대 개수인 n으로 나눈 몫과 나머지가 각 행과 열의 위치가 된다.
하여 이를 활용해 해당 2차원 배열에서 해당 위치의 값만 바로 정답 배열에 추가하는 방법으로 해결하였다.
- 행의 위치를 나타낼 변수를 생성하고 정답 값의 시작 행 번호를 대입한다. row = left // n
- 열의 위치를 나타낼 변수를 생성하고 정답 값의 시작 열 번호를 대입한다. col = left % n
- 전체 정답 배열의 개수는 오른쪽에서 왼쪽 인덱스 번호를 빼준 값에 1을 더해준 값으로 해당 값만큼 반복하며 정답을 찾는다. for _ in range(right - left + 1)
- 만약 행의 값이 열의 값보다 크면 더 큰 행의 값에서 1 더해준 값을 저장한다. 여기서 1을 더해주는 이유는 인덱스 값은 0부터이지만 들어가는 값은 1부터이기 때문이다. if (row > col): answer.append(row + 1)
- 반면에 열의 값이 행의 값보다 크면 더 큰 열의 값에서 1 더해준 값을 저장한다. else: answer.append(col + 1)
- 정답을 하나 찾았으면 다음 위치로 이동한다. 먼저 열을 1 증가시켜 준다. col += 1
- 이동한 열의 위치가 2차원 배열을 벗어나면 if (col >= n)
- 열의 위치를 다시 제일 앞으로 이동해 주고 col = 0
- 행의 위치를 다음 행으로 이동해 준다. row += 1
반응형
3. 소스코드
def solution(n, left, right):
answer = []
row = left // n
col = left % n
for _ in range(right - left + 1):
if (row > col):
answer.append(row + 1)
else:
answer.append(col + 1)
col += 1
if (col >= n):
col = 0
row += 1
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] [1차] 캐시 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.19 |
---|---|
[프로그래머스] 행렬의 곱셈 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.19 |
[프로그래머스] 폰켓몬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
[프로그래머스] 명예의 전당(1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
[프로그래머스] H-Index - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 연속 부분 수열 합의 개수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 2016년 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 괄호 회전하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |