[프로그래머스|파이썬] 뒤에 있는 큰 수 찾기 (연습문제/lv.2)

2023. 5. 22. 12:24·Problem Solving/프로그래머스
반응형
문제

https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🐍파이썬
더보기

❌ 실패 코드

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            if numbers[i] < numbers[j]:
                answer.append(numbers[j])
                break
        else:
            answer.append(-1)
    return answer

이중 for문 사용

만약 numbers의 원소갯수가 1,000,000개이고 큰뒷수가 리스트의 끝에 존재한다면 999,999개를 비교해야 하므로 시간초과가 발생한다. 

def solution(numbers):
    answer = [-1 for _ in range(len(numbers))]
    stack = []
    for idx, num in enumerate(numbers):
        #스택에 원소가 남아있고 새로운 수가 스택상단의 수보다 크다면
        while stack and num > numbers[stack[-1]]:
            #answer 배열의 스택상단 idx 값에 큰 수 num 삽입
            answer[stack.pop()] = num
        #매번 stack에 새로운 수의 idx를 삽입
        stack.append(idx)
    return answer

 

💡 코드 설명

새로운 수(num)이 들어오면 numbers[스택 최상단 idx]값과 비교한다.

더 이상 새로운 수보다 작은 수가 없을 때까지 스택을 pop하고,

arr[pop한 스택 idx]에 새로운 수를 대입한다.

처음에 arr값을 모두 -1로 초기화했기 때문에 뒷 큰수를 찾지 못한 경우 -1 값이 그대로 유지된다.  

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > 프로그래머스' 카테고리의 다른 글

[프로그래머스|파이썬] 바탕화면 정리 (연습문제/lv.1)  (0) 2023.05.23
[프로그래머스|파이썬] [3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT/lv.2)  (0) 2023.05.22
[프로그래머스|파이썬] k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT/lv.2)  (0) 2023.05.22
[프로그래머스|파이썬] 베스트앨범 (해시/level 3)  (0) 2023.04.29
[프로그래머스|파이썬] 공원 산책 (연습문제/level 1)  (0) 2023.04.28
[프로그래머스|파이썬] 달리기 경주 (연습문제/level 1)  (0) 2023.04.27
'Problem Solving/프로그래머스' 카테고리의 다른 글
  • [프로그래머스|파이썬] [3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT/lv.2)
  • [프로그래머스|파이썬] k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT/lv.2)
  • [프로그래머스|파이썬] 베스트앨범 (해시/level 3)
  • [프로그래머스|파이썬] 공원 산책 (연습문제/level 1)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    백준
    플러터
    컴퓨터네트워크
    웹사이트
    프로그래머스
    구현
    Til
    spring boot
    ZeroCho
    뉴렉처
    포트폴리오
    자바
    공식문서
    Next.js
    알고리즘
    클론 프로젝트
    리액트
    Jiraynor Programming
    자바스크립트
    블로그 제작
    SWEA
    React
    d3
    mysql
    강의내용정리
    파이썬
    AWS
    프로젝트
    bfs
    타입스크립트
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[프로그래머스|파이썬] 뒤에 있는 큰 수 찾기 (연습문제/lv.2)
상단으로

티스토리툴바