먹고 기도하고 코딩하라

프로그래머스 :: n^2 배열 자르기 (Python3) 본문

자료구조&알고리즘/프로그래머스

프로그래머스 :: n^2 배열 자르기 (Python3)

2G Dev 2022. 5. 2. 23:58
728x90
728x90

 

 

코딩테스트 연습 - n^2 배열 자르기

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부

programmers.co.kr

 

문제 설명

 

이 문제는 딱히 어떤 알고리즘이 필요한 문제는 아니다.

그리고 예제에서 보여주는대로 정말 배열을 n*n 크기 리스트를 만들어서 풀 수 있는 문제가 아니다.

(제한사항을 보면 1000만*1000만까지 가는데 학생.. 감당할 수 있겠어?)

 

예제에서 보여준 예시를 보면 4*4 사각형은 다음과 같이 채워진다.

1 2 3 4

2 2 3 4

3 3 3 4

4 4 4 4

이렇게 n*n 정사각형이 나오게 되는데,

잘 관찰해 보면 행/열 중 큰 값을 자기 값으로 갖게 된다.

예를 들어 3행 1열에 있는 값은 3이다.

 

다행히도 left, right 모두 실제로 인덱스가 시작하는 번호인 0번부터 시작한다.

그러므로 우리가 해야 할 일은 left부터 right+1 번호까지 루프를 도는 루프 변수 i를 만들어서 이 i를 n으로 나눈 몫과 나머지 중 더 큰 것을 골라 1을 더해주는 것이다.

파이썬은 divmod가 있기 때문에 한 줄로 해결 가능하다.

def solution(n, left, right):
    return [max(divmod(i, n))+1 for i in range(left, right+1)]

 

 

728x90
반응형
0 Comments
댓글쓰기 폼