반응형
작성코드
def solution(heights):
answer = []
# (1)
answer.append(0)
# (2)
for i in range(1,len(heights)):
flag=False
# (3)
for j in range(i-1, -1, -1):
if heights[j] > heights[i]:
answer.append(j+1)
flag=False
break
else:
flag=True
# (4)
if flag:
answer.append(0)
return answer
코드설명
(1) 맨 왼쪽 탑은 어차피 신호를 보낼 탑이 없음
- 그러니 answer의 값은 무조건 0 입니다.
(2) 왼쪽 탑부터 로직 수행
for i in range(1, len(height))
- 두번째 탑 (인덱스 값 1) 부터 끝 탑까지 로직을 수행합니다.
(3) 현재 기준탑과 왼쪽에 있는 탑들이랑 높이 비교
for j in range(i-1, -1, -1)
- 현재 기준탑에서 왼쪽에 있는 탑들 (인덱스 값 : i-1, i-2, ... 0) 을 비교합니다.
if heights[j] > heights[i]
- 현재 기준탑보다 더 높은 탑이 있다면 그 탑한테 신호를 보냅니다. answer.append(j+1) 로 신호를 보낸 탑의 위치를 answer 배열에 집어넣습니다.
- 이미 신호를 보냈기 때문에 굳이 더 비교할 필요가 없으므로 break 명령으로 반복문을 빠져나옵니다.
(4) 왼쪽 탑 중에 높은 탑이 없으면 answer값을 0으로 세팅
if flag
- 신호를 보낼 탑이 없는 경우입니다.
python 개념
range() 함수
- range(4)
0
1
2
3
- range(1,4)
1
2
3
- range(3,-1,-1)
3
2
1
0
반응형
'프로그래밍 > 알고리즘 문제' 카테고리의 다른 글
[프로그래머스] 스택/큐 주식가격 (python) (4) | 2019.08.26 |
---|---|
[프로그래머스] 스택/큐 기능개발 (python) (4) | 2019.08.25 |
[프로그래머스] 스택/큐 다리를 지나가는 트럭 (python) (2) | 2019.08.22 |
[프로그래머스] 스택/큐 쇠막대기 (python) (8) | 2019.08.19 |
[프로그래머스] 스택/큐 프린터문제 (Python) (8) | 2019.08.18 |
댓글