99클럽 코테 스터디 1일차 TIL + 배열/스택

2024. 7. 22. 16:35·Algorithm/99클럽 코테 스터디
목차
  1. 💡문제
  2.  
  3. 🤔접근법
  4.  
  5. 🤯FAIL
  6. 답을 봐서 문제를 푼 경우
  7. 👩‍💻 코드
728x90
반응형

💡문제

[level 2] 뒤에 있는 큰 수 찾기 - 154539

문제 링크

성능 요약

메모리: 206 MB, 시간: 259.36 ms

 


 

🤔접근법

주어진 정수 배열을 순회하면서 본인보다 오른쪽에 있는 수들 중에서 본인보다 크지만 가장 가까이 있는 수 찾기

범위 체크 및 시간복잡도 예상

  • 1 ≤ N ≤ 1,000,000
  • O($NlogN$) 보다 더 작아야 한다.
  •  

풀이법

❌ 접근 방법. 완탐

  1. 주어진 정수 배열을 인덱스 0 ~ N 까지 반복
  2. 가르키는 정수로부터 오른쪽에 존재하는 모든 정수를 탐색
  3. 만약 본인보다 큰 정수가 나오면 answer에 저장하고 정지

➡️ 해당 풀이법의 시간 복잡도 : $O(N^2)$ → 시간 초과

 

⭕ 접근 방법. stack을 사용하자 !

스택에는 정수배열의 인덱스와 값을 넣는다.

스택은 top 보다 값이 작을때만 쌓을 수 있다.

  1. 주어진 정수 배열을 인덱스 0 ~ N 까지 반복
  2. 스택의 top의 값이 배열의 값보다 크다면 answer 배열에 top 위치에 가르키는 값을 넣는다. → top보다 오른쪽에 있으면서 top보다 크고 가장 가까이 있는 수 찾음!
  3. 스택의 top의 값이 배열의 값보다 작다면 스택에 쌓는다. → 스택에 쌓여있는 값들은 찾고자 하는 값 즉, 본인보다 오른쪽에 있고, 본인보다 크고, 가장 가까이 있는 수를 찾지 못한 수들이다.
  4. 배열에 가르키고 있는 값을 스택에 쌓고 다음으로 넘어간다.

➡️ 해당 풀이법의 시간 복잡도 : $O(N)$

 


 

🤯FAIL

답을 봐서 문제를 푼 경우

  • 스택 자료구조를 사용해야 한다는 아이디어를 떠올리지 못했다.
  • 다양한 자료구조를 사용할 수 있도록 노력해보자.

 

👩‍💻 코드

import java.io.IOException;
import java.util.Arrays;
import java.util.Stack;

class Number {
    int idx;
    int num;
    public Number(int idx, int num){
        this.idx = idx;
        this.num = num;
    }
}
class Solution {
    public int[] solution(int[] numbers) {
            int[] answer =  new int[numbers.length];
            Arrays.fill(answer, -1);
            Stack<Number> st = new Stack<>();

            for(int i = 0; i < numbers.length; i++){
                while (true){
                    if(st.size() == 0 || st.peek().num >= numbers[i]){
                        break;
                    }else{
                        answer[st.pop().idx] = numbers[i];
                    }
                }
                st.push(new Number(i,numbers[i]));
            }
        
        return answer;
    }
}

반응형

'Algorithm > 99클럽 코테 스터디' 카테고리의 다른 글

99클럽 코테 스터디 6일차 TIL + Arrays.sort/[프로그래머스] 테이블 해시 함수  (0) 2024.07.27
99클럽 코테 스터디 5일차 TIL + HashMap/[프로그래머스] 베스트앨범  (0) 2024.07.27
99클럽 코테 스터디 4일차 TIL + 문자열/[프로그래머스] 문자열 압축  (0) 2024.07.25
99클럽 코테 스터디 3일차 TIL + [프로그래머스] 숫자 문자열과 영단어  (0) 2024.07.24
99클럽 코테 스터디 2일차 TIL + 유클리드호제법/GCD  (1) 2024.07.23
  1. 💡문제
  2.  
  3. 🤔접근법
  4.  
  5. 🤯FAIL
  6. 답을 봐서 문제를 푼 경우
  7. 👩‍💻 코드
'Algorithm/99클럽 코테 스터디' 카테고리의 다른 글
  • 99클럽 코테 스터디 5일차 TIL + HashMap/[프로그래머스] 베스트앨범
  • 99클럽 코테 스터디 4일차 TIL + 문자열/[프로그래머스] 문자열 압축
  • 99클럽 코테 스터디 3일차 TIL + [프로그래머스] 숫자 문자열과 영단어
  • 99클럽 코테 스터디 2일차 TIL + 유클리드호제법/GCD
제가안난데여♪(´ε`*)
제가안난데여♪(´ε`*)
기억의 유한함을 기록의 무한함으로 ✍️ 예비 개발자가 꿈꾸는 공간 여기는 안나의 개발 블로그 💻
  • 제가안난데여♪(´ε`*)
    안나의 전두엽 어딘가 🧠
    제가안난데여♪(´ε`*)
    기억의 유한함을 기록의 무한함으로 ✍️ 예비 개발자가 꿈꾸는 공간 여기는 안나의 개발 블로그 💻
  • 전체
    오늘
    어제
    • 분류 전체보기 (128)
      • 간단하게 한스푼🥄 (1)
      • Programming (56)
        • Spring (16)
        • Vue.js (6)
        • Deep Learning (3)
        • DataBase (5)
        • React (26)
      • DevOps (21)
        • Docker (12)
        • Linux (4)
      • Algorithm (46)
        • 알고리즘 정리 (5)
        • 자료구조 (0)
        • PS - 백준 (28)
        • 99클럽 코테 스터디 (13)
      • Project (0)
        • CampFire (0)
      • 안나의 취뽀일기 (˵ •̀ ᴗ - ˵ ) ✧ (4)
        • SSAFY_9기 (2)
        • SW 부트캠프 (2)
  • 잔디 달력

    ◀   May   ▶
    일 월 화 수 목 금 토
    1 1 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
  • 인기 글

  • 태그

    stack
    springboot
    React
    Spring
    리액트 상태
    Vue.js
    front-end
    java stack
    greedy
    자바
    김영한
    항해99
    코딩테스트 준비
    java
    백준 구현문제
    알고리즘
    linux
    자바 스택
    백준
    Vue
    til
    docker
    도커컨테이너
    java 백준
    99클럽
    topology sort
    백준 java
    개발자 취업
    도커
    Vue.js 입문하기
  • 05-15 14:45
    반응형
  • hELLO· Designed By정상우.v4.10.3
제가안난데여♪(´ε`*)
99클럽 코테 스터디 1일차 TIL + 배열/스택

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.