https://school.programmers.co.kr/learn/courses/30/lessons/87390
1. 해결방법
left와 right의 값으로 해당 위치의 값을 찾을 방법을 고민해보기 시작했고 그 결과 위치값에서 n을 나눠준 나머지와 몫 중 큰 값이 1을 더해준 값이 해당 위치의 값이라는 사실을 알게 되었다.
2. 정답코드
(1)
def solution(n, left, right):
answer = []
for i in range(1, n + 1):
for j in range(1, n + 1):
answer.append(max(i, j))
return answer[left:right + 1]
2중 for문을 사용하면 간단하게 해결되는 문제지만 n의 범위로 인해서 시간 복잡도가 오버플로가 돼버려 대부분의 테스트가 시간초과로 나온다.
실패...
(2)
def solution(n, left, right):
answer = []
for i in range(left, right + 1):
answer.append(max(i // n, i % n) + 1)
return answer
솔직히 아이디어를 구현하는데 있어서 많이 힘들었다. 다른 분들의 블로그를 참고하지 않았으면 못풀었을 만큼 아이디어를 생각해내기가 어려웠다.
그래도 좀 더 많이 풀다보면 감이 잡힐 것 같다는 희망도 동시에 얻은 것 같다!
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 프린터 (0) | 2022.09.14 |
---|---|
[프로그래머스] Lv.2 기능개발 (0) | 2022.09.14 |
[프로그래머스] Lv.2 짝지어 제거하기 (0) | 2022.09.12 |
[프로그래머스] Lv.2 카펫 (0) | 2022.09.12 |
[프로그래머스] Lv.2 JadenCase 문자열 만들기 (0) | 2022.09.12 |