728x90
https://school.programmers.co.kr/learn/courses/30/lessons/87390
아 또 풀었는데 시간초과😈
내가 효율적으로 코드를 짜는 법을 모르나보다.
시간초과 코드 :
def solution(n, left, right):
answer = []
mp = [[0]*n for _ in range(n)]
for i in range(n) :
mp[0][i] = i
for j in range(1,i+1) :
mp[j][i] = i
for j in range(i,-1,-1) :
mp[i][j] = i
for i in range(n) :
answer.extend(mp[i])
answer = list(map(lambda x : x+1, answer))
answer = answer[left:right+1]
return answer
정답코드를 보니까 그럴만 하기도 하다.....덴댱....
나는 그냥 문제에 나와있는 애니메이션을 고대로 코드로 옮겼다.
근데 정답 코드는 머리를 써서 하네..
한번 그림을 그려보고 가만히 생각하면
해당 순번 값을 n으로 나눈 몫은 행번호를 가리키고
n으로 나눈 나머지는 열의 번호를 가리킨다.
해당 이차원 배열을 채우는 방법은 행과 열의 번호 중 큰 숫자로 채우는 것이다.
즉, n으로 나눠서 나온 몫과 나머지 중 큰 값 + 1 로 채우면 된다.
근데 이걸 혼자 그냥 내가 어떻게 생각하냐고 😣
정답 코드 :
def solution(n, left, right):
answer = []
for i in range(left, right +1 ) :
answer.append(max(i//n, i%n)+1)
return answer
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]경주로 건설_[BFS] (1) | 2022.10.06 |
---|---|
[Python/프로그래머스]수식최대화_[구현] (0) | 2022.10.02 |
[Python/프로그래머스]양과 늑대_(KaKao)_[DFS] (1) | 2022.10.01 |
[Python/프로그래머스]보석쇼핑_(KaKao)_[투포인터] (2) | 2022.10.01 |
[Python/프로그래머스]순위검색_(KaKao)_[구현,bisect(이분탐색)] (0) | 2022.09.27 |