Pepperminttt
Pepperminttt's Dev
Pepperminttt
전체 방문자
오늘
어제
  • devInfo (86)
    • forBeingGoodDeveloper (2)
    • React (2)
      • LostArk Open API (1)
    • algorithm (58)
      • problems (44)
      • theory (14)
    • computerScience (8)
      • network (8)
    • javaScript (8)
    • Java (4)
    • web (2)
      • webApplication (2)
    • etc. (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Java
  • 프로그래머스
  • DP
  • 탐욕법 문제
  • greedy
  • C++
  • 알고리즘
  • DP문제
  • JavaScript
  • 벨만-포드
  • node.js
  • 그래프
  • solved.ac
  • Network
  • 탐욕법
  • dfs
  • BFS
  • dfs문제
  • bfs문제
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Pepperminttt

Pepperminttt's Dev

[Programmers]큰 수 만들기
algorithm/problems

[Programmers]큰 수 만들기

2022. 11. 5. 20:07

문제

출처 : 프로그래머스 큰 수 만들기

 > 문제 링크 

 

프로그래머스

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

programmers.co.kr


문제 풀이

 해당 문제는 탐욕범을 사용하여 풀 수 있다. 숫자를 제거하며 높은 자리 부터 탐욕적으로 채워나가면 된다.

 

주어지는 number의 첫 자리부터 시작하여 비어있는 stack에 하나씩 psuh해준다. push를 하기 전 저장된 stack의 top의 값과 비교한다. 이 때 top보다 현재 자리의 숫자가 크다면 해당 top을 pop해준다. 이렇게 pop된 숫자는 제거가 된 숫자이다. 그렇기에 제거가 될 때 k를 -1 해준다.

 

해당 과정을 반복하여 k가 0이 되면 해당 과정을 멈추고 stack과 비교 전인 number의 뒷 자리를 더하여 출력해준다.

 

과정 1
과정 2
과정 3

 

과정 4

그림 출처


코드

function solution(number, k) {
     const answer = [];
  for (let num of number) {
    while (k > 0 && answer[answer.length - 1] < num) {
      answer.pop(num);
      k -= 1;
    }
    answer.push(num);
  }
  return answer.join("").slice(0, number.length - k);
}

 


 

'algorithm > problems' 카테고리의 다른 글

[백준] 14226번 이모티콘 - Node.js  (0) 2022.11.13
[백준] 1697번 숨바꼭질 _ Node.js  (0) 2022.11.12
[백준] 15988번 1, 2, 3 더하기 3  (0) 2022.11.07
[백준] 2178번 미로 탐색  (0) 2022.11.07
[백준] 14888번 연산자 끼워넣기  (0) 2022.11.07
    'algorithm/problems' 카테고리의 다른 글
    • [백준] 1697번 숨바꼭질 _ Node.js
    • [백준] 15988번 1, 2, 3 더하기 3
    • [백준] 2178번 미로 탐색
    • [백준] 14888번 연산자 끼워넣기
    Pepperminttt
    Pepperminttt
    HTML, JavaScript, Python 등 Computer language TIL

    티스토리툴바