새소식

Problem solving/문제 풀이 - 2023.02.09

[파이썬] 프로그래머스 n^2 배열 자르기 풀이

  • -

문제 확인

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • $N = 10^7$이기 때문에 2 차원 배열을 선언하고, 각 성분에 값을 할당할 경우 시간 초과가 발생한다.
  • 따라서 별도의 규칙을 찾아서 문제를 풀려고 했는데, 고민해도 생각이 안나서 다른 사람의 풀이를 참고해서 풀었다.
    • 2 차원 행렬을 1 차원으로 펼칠 경우, 각 성분은 n으로 나눈 몫과 나머지로 표현할 수 있다.
# n이 크기 때문에, n**2만 해도 시간 초과 발생!
# 규칙을 찾아야 함
# 1     2       3       2       2       3       3       3       3
# (0,0) (0,1)   (0,2)   (1, 0)  (1, 1)  (1, 2)  (2, 0)  (2, 1)  (2, 2)
# 행렬 : 몫, 나머지로 표현된다고 생각 가능!
def solution(n, left, right):
    answer = [max(i // n, i % n) + 1 for i in range(left, right + 1)]
    return answer

참고 풀이

 

[프로그래머스] n^2 배열 자르기 (level2, python)

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

hoons-dev.tistory.com

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.