백준 17298번 : 오큰수(python)

2021. 11. 20. 14:44·Algorithm

문제

크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다.

예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다.

입력

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

출력

총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.

예제 입력 1 복사

4
3 5 2 7

예제 출력 1 복사

5 7 7 -1

예제 입력 2 복사

4
9 5 4 8

예제 출력 2 복사

-1 8 8 -1

코드

# num리스트에 값을 입력받은 다음 stack리스트에 있는 비교하는데
# stack리스트안의 값보다 크면 오큰수이기 때문에
# stack리스트의 값을 result리스트에 넣어준다.
# 만약 크기가 작다면 stack리스트에 넣어준다.
# 이때 stack리스트에는 값이 아닌 값이 있는 리스트의 인덱스값을 넣어줘야된다.
# 왜냐하면 result값에 넣어줄때 몇번째에 있는 값인지를 알아야하기 때문이다. 

n=int(input())
num=list(map(int,input().split()))
result=[-1]*n
stack=[]
for i in range(len(num)):
    while(len(stack)!=0 and num[stack[-1]]<num[i]):
        result[stack[-1]]=num[i]
        stack.pop()
    stack.append(i)
print(*result)

코드설명

 

느낀점

1. 리스트안에 인덱스값을 넣어 원하는 위치의 숫자를 사용하는 방식

2. print(*리스트)를 하면 띄어쓰기를 한채 출력

 

728x90

'Algorithm' 카테고리의 다른 글

백준 1918번 : 후위 표기식(python)  (0) 2021.11.22
백준 1935번 : 후위표기식2 (python)  (0) 2021.11.21
백준 17299번 : 오등큰수 (python)  (0) 2021.11.19
백준 10799번 : 쇠막대기  (0) 2021.11.18
백준 17413번 : 단어 뒤집기2(python)  (0) 2021.11.17
'Algorithm' 카테고리의 다른 글
  • 백준 1918번 : 후위 표기식(python)
  • 백준 1935번 : 후위표기식2 (python)
  • 백준 17299번 : 오등큰수 (python)
  • 백준 10799번 : 쇠막대기
study ticket
study ticket
  • study ticket
    혼자하는 공부
    study ticket
  • 전체
    오늘
    어제
    • 개발 (77)
      • 오류 (1)
      • Spring (13)
      • Java (0)
      • Data structure (6)
      • Algorithm (49)
        • 백준 (17)
        • 프로그래머스 (2)
      • 문제풀면서 알게되는것들 끄적 (2)
      • 머신러닝 (4)
        • sklearn (3)
        • pandas (1)
      • 프로젝트 (0)
        • 핏두 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1157
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
study ticket
백준 17298번 : 오큰수(python)
상단으로

티스토리툴바