https://school.programmers.co.kr/learn/courses/30/lessons/87390
아래와 같이 했을 경우에,, 몇몇개는 통과했었는데 나머지 테스트들에서는 '실패 (시간 초과)'가 떠버렸다..
#틀린 풀이
def solution(n, left, right):
answer = [[0 for _ in range(n)] for _ in range(n) ]
arr=[]
for i in range(n):
for j in range(n):
if i==j:
answer[i][j]=i+1
for i in range(n):
for j in range(n):
temp=max(i,j)
answer[i][j]=answer[temp][temp]
#print(answer)
for i in range(n):
for j in range(n):
arr.append(answer[i][j])
return arr[left: right+1]
더 효율적인 코드를 짜야하는 것일까. 흠 고민해본다. 구글링해서 보니까 내 예상과는 전혀 다른 풀이였다..!
몫과 나머지 중에서 큰것+1의 값을 넣는 방식으로 구현하는 것이 정답이었는데 어떻게 이런 아이디어를 떠올릴 수가 있는건지🙄더 공부해야겠다.
if) index = 8, n = 4
(i // n, i % n) → (2, 0) → 3
if) index = 9, n = 4
(i // n, i % n) → (2, 1) → 3
if) index = 10, n = 4
(i // n, i % n) → (2, 2) → 3
if) index = 11, n = 4
(i // n, i % n) → (2, 3) → 4
if) index = 7, n = 4
(i // n, i % n) → (1, 3) → 4
if) index = 14, n = 4
(i // n, i % n) → (3, 2) → 4
#옳은 풀이 1
def solution(n, left, right):
return [max(i//n, i%n)+1 for i in range(left, right+1)]
#옳은 풀이 2
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
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[level 2] k진수에서 소수 개수 구하기 (1) | 2023.05.14 |
---|---|
[level 2] 피로도 (0) | 2023.05.13 |
[level 1] 대충 만든 자판 (0) | 2023.05.10 |
[level 1] 덧칠하기 (0) | 2023.05.10 |
[level 1] 카드 뭉치 (0) | 2023.05.10 |