코딩테스트/알고리즘 문제풀이

[99클럽 코테 스터디 20일차 TIL] 큰 수 만들기 - Java [자바][프로그래머스]

2024. 8. 11. 00:15
목차
  1. 📜 문제 내용
  2. 🤔 과정
  3. ✨ 최초 제출 답안 -  🆖 테스트케이스 오답 
  4. ✍️ 재제출 답안
  5. 🔗 문제 링크
728x90
반응형

 

 

📜 문제 내용

 

🤔 과정

  • 순서대로 문자열 앞부터 순회하면서, 큰 수가 나오면 작은 값을 계속 삭제하는 것이 포인트. 
    • 1 -> 9 (1을 버리고 9를 넣음) -> 2 -> 4 (2를 버리고 4를 넣음) 
  • 문자열 number를 char 형태로 쪼개 하나씩 Character 형 stack에 조건에 맞게 넣는다. 

 

✨ 최초 제출 답안 -  🆖 테스트케이스 오답 

import java.util.*;
class Solution {
    public String solution(String number, int k) {
        
        Stack<Character> stack = new Stack<>();

        for(int i = 0; i < number.length(); i++){
            char num = number.charAt(i);
            while(!stack.isEmpty() && stack.peek() < num && k > 0){
                k--;
                stack.pop();
            }
            stack.add(num);
        }

        String answer = "";
        for(int i=0;i<stack.size();i++){
            answer += stack.get(i);
        }
        
        return answer;
    }
}

 

  • 반례가 어떤 것이 있을까 고민했고, 계속 줄어드는 숫자(ex. 4321) 의 경우에 스택에 모든 숫자들이 다 들어가있어서 stack.size()로 제한하면 모든 숫자가 그대로 answer에 들어가게 된다. 
반례 1) ("1000", 1)
기댓값 : "100" , 실제 나온 값 "1000"

반례 2) ("4321", 1)
기댓값 : "432" , 실제 나온 값 "4321" 
  • 그래서 StringBuilder로 answer를 만든 뒤, 나중에 substring을 통해 잘라내기로 해봤다. 

 

✍️ 재제출 답안

import java.util.*;

class Solution {
    public String solution(String number, int k) {

        Stack<Character> stack = new Stack<>();

        for(int i = 0; i < number.length(); i++){
            char num = number.charAt(i);
            
            while(!stack.isEmpty() && stack.peek() < num && k > 0){
                k--;
                stack.pop();
            }
            
            stack.add(num);
        }

        StringBuilder answer = new StringBuilder();
        for(int i = 0; i < stack.size(); i++){
            answer.append(stack.get(i));
        }
        
        return answer.substring(0, answer.length() - k);
    }
}

 

 

🔗 문제 링크

  • 프로그래머스 - 큰 수 만들기 (링크) 
 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
저작자표시 (새창열림)
  1. 📜 문제 내용
  2. 🤔 과정
  3. ✨ 최초 제출 답안 -  🆖 테스트케이스 오답 
  4. ✍️ 재제출 답안
  5. 🔗 문제 링크
'코딩테스트/알고리즘 문제풀이' 카테고리의 다른 글
  • [99클럽 코테 스터디 22일차 TIL] 멀리 뛰기 - Java [자바][프로그래머스]
  • [99클럽 코테 스터디 21일차 TIL] 피보나치 수 - Java [자바][프로그래머스]
  • [99클럽 코테 스터디 19일차 TIL] 구명보트 - Java [자바][프로그래머스]
  • [99클럽 코테 스터디 18일차 TIL] 단지번호붙이기 - Java [자바][백준]
bonkri
bonkri
Swimming through the sea of ​​information
bonkri
Bon_chive
bonkri
전체
오늘
어제
Bonkri's GitHub
  • 분류 전체보기
    • 일상 기록
    • SSAFY
      • TENsion UP 10기!
      • SSAFYcial
    • 프로그래밍 언어
      • Java
    • IT 자격증
    • 코딩테스트
      • TIL
      • 유형별 개념
      • 알고리즘 문제풀이
반응형
250x250

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
bonkri
[99클럽 코테 스터디 20일차 TIL] 큰 수 만들기 - Java [자바][프로그래머스]
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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