728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
해당 문제를 해결하기 위해 처음에 이중 for문을 사용하니 시간초과가 발생하였다.
하여 for문을 하나만 사용하면서 문제를 해결할 수 있는 방안을 생각해 보았다.
우선 현재 숫자와 다음 숫자를 한 번만 비교하면서 다음 숫자가 더 크면 다음 숫자로 바꾸면 되고, 만약 현재 숫자가 더 크거나 같다면 우선 해당 위치를 따로 저장한다.
해당 과정을 반복하다가 따로 저장한 위치의 숫자 값보다 큰 값이 현재 숫자로 나오게 된다면 이전에 저장해 둔 위치의 값들을 모두 현재 숫자(저장해 둔 위치의 숫자 값보다 큰 숫자)로 바꾸면 된다.
- 정답 리스트를 모두 -1로 초기화한다. answer = [-1] * len(numbers)
- 현재 숫자의 위치를 저장해 줄 리스트를 생성한다. li = list()
- 현재 숫자와 다음 숫자를 비교해야 하므로 숫자 리스트의 마지막 전까지 반복한다. for i in range(len(numbers) - 1)
- 만약 현재 숫자가 다음 숫자보다 작다면 if (numbers[i] < numbers[i + 1])
- 정답의 현재 숫자 위치에 다음 숫자를 저장한다. answer[i] = numbers[i + 1]
- 숫자의 위치를 저장한 리스트가 공백이 아니고 마지막으로 저장된 위치의 숫자 값이 현재 숫자보다 작으면 계속 반복한다. while (li) and (numbers[li[-1]] < numbers[i])
- 마지막 위치를 가져와 정답의 해당 위치에 현재 숫자를 저장한다. answer[li.pop()] = numbers[i]
- 현재 위치를 추가한다. li.append(i)
- 마지막 전까지 반복을 하고 나서 숫자의 위치를 저장한 리스트가 공백이 아니고 마지막으로 저장된 위치의 숫자 값이 다음 숫자(마지막 숫자) 보다 작으면 계속 반복한다. while (li) and (numbers[li[-1]] < numbers[i + 1])
- 마지막 위치를 가져와 정답의 해당 위치에 다음 숫자(마지막 숫자)를 저장한다. answer[li.pop()] = numbers[i + 1]
반응형
3. 소스코드
def solution(numbers):
answer = []
answer = [-1] * len(numbers)
li = list()
for i in range(len(numbers) - 1):
if (numbers[i] < numbers[i + 1]):
answer[i] = numbers[i + 1]
while (li) and (numbers[li[-1]] < numbers[i]):
answer[li.pop()] = numbers[i]
li.append(i)
while (li) and (numbers[li[-1]] < numbers[i + 1]):
answer[li.pop()] = numbers[i + 1]
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] [3차] 파일명 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.11 |
---|---|
[프로그래머스] 등굣길 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.03 |
[프로그래머스] 숫자 짝꿍 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.01 |
[프로그래머스] 옹알이 (2) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.30 |
[프로그래머스] 모음사전 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.26 |
[프로그래머스] 방문 길이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.21 |
[프로그래머스] 게임 맵 최단거리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.20 |
[프로그래머스] 스킬트리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.19 |