코딩테스트

프로그래머스 n^2 배열 자르기

yolang 2024. 7. 22. 19:58
728x90

 

🔗 n^2 배열 자르기

 

다시 오늘부터 코딩스터디 시작~~

 

📌오늘의 학습 키워드

  • 2차원 배열을 이해하고, 시간초과를 방지하자

✨공부한 내용 본인의 언어로 정리하기

  • 2차원 배열의 행과 열에 대한 이해가 필요했다. 예를 들어 4*4 2차원 배열을 [0, 1, 2, 3, 4, 5, 6, ... ] 이렇게 이어 붙였다고 했을 때, 6은 2행 (6 / 4 = 1, 1 + 1) 3열 (6 % 4 = 2, 2 + 1) 이다. 

📚오늘의 회고

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지
    • for문 2개를 썼더니 시간 초과가 났다. 그래서 for문 1개로 줄였는데도 시간초과가 났다.
  • 어떻게 해결했는지
    • 마지막으로는 배열을 잘라야 했는데, 다 계산을 하고 자르는게 아니라 그 부분만 계산하도록 수정했더니 통과했다. 
  • 무엇을 새롭게 알았는지
    • 단순히 반복문을 줄이는 것뿐만 아니라 O(n)의 시간복잡도를 가질 때도 그 길이를 줄이면 속도차이가 의미가 있구나!
  • 내일 학습할 것은 무엇인지
    • 완전 탐색 공부 좀 해야지~~ 😲

[🤓문제 해결 코드]

def solution(n, left, right):
    answer = []
    
    for i in range(left, right + 1):
        a, b = i // n, i % n
        answer.append(max(a + 1, b + 1))

    return answer

 

728x90