728x90
https://school.programmers.co.kr/learn/courses/30/lessons/87390
풀이
이런 문제는, 문제에서 규칙을 찾을 수 있는지 확인해야 한다.
일단 대각선의 값이 눈에 띈다. 대각선의 원소들은 1, 2, 3, 4, ...의 순서로 배열되어 있다.
이 대각선의 값을 기준으로, 왼쪽 직선과 위쪽 직선은 같은 값을 가지고 있다.
위와 아래는 인덱스 값이 약 n만큼 차이가 나고, 대각선의 한 원소로부터 왼쪽의 원소들은 인덱스 값이 1씩 줄어든다.
여기서 i // n과 i % n를 적절히 활용하면 풀 수 있을 것이라는 것을 직감적으로 느낄 수 있다.
정확한 규칙을 찾기 위해 몇 가지의 인덱스 값들을 예시를 들어 비교해보면,
입출력 예
n | left | right | result |
3 | 2 | 5 | [3,2,2,3] |
4 | 7 | 14 | [4,3,3,3,4,4,4,4] |
예시 1번을 보면 n=3일때 배열을 열이 1인 행렬로 그려보면
0 (0,0) 1 (0,1) 2 (0,2) 3 (1,0) 4 (1,1) 5 (1,2) 6 (2,0) 7 (2,1) 8 (2,2)
이런식으로 볼수 있다.
만약 내가 구하고자 하는 같이 index 8번이라면, 8 ( 8//3, 8% 3)=( 몫, 나머지)로 확인할 수 있다.
그리고 몫과 나머지중 가장 큰값에 따라서 숫자가 들어간다!
즉, index = 8, n = 4 이라면
(i // n, i % n) → (2, 0) → 3
이거에 +1을 한것이 답이 된다 !
def solution(n, left, right):
answer = []
for i in range(left, right+1):
a = i//n
b = i % n
if a < b:
a,b = b,a
answer.append(a+1)
return answer
728x90
'CodingTest > [프로그래머스 LV.2]' 카테고리의 다른 글
[프로그래머스] 의상 (python) (0) | 2024.07.04 |
---|---|
[프로그래머스] 연속 부분 수열 합의 개수 (python) (0) | 2024.06.26 |
[프로그래머스] 귤 고르기(python) (0) | 2024.06.23 |
프로그래머스 Lv2. 올바른 괄호 (0) | 2024.05.30 |
프로그래머스 Lv2. 게임 맵 최단거리 [Python] - 깊이/너비 우선 탐색(DFS/BFS) (0) | 2024.04.03 |