[프로그래머스][Java] Lv.2 짝지어 제거하기

2023. 6. 8. 23:57·Algorithms(CT)


문제 분석

 

연속된 문자를 짝을 지어 제거한다.

문자열 길이가 1,000,000이하로 길이가 길다.

 

위 조건을 보고  Stack을 사용해야 한다는 것을 알아차려야 한다.

(필자는 ArrayList로 풀려다가 망했다..)


풀이과정

 

  1. for문으로 문자열을 처음부터 끝까지 검사한다.
  2. 스택이 비어있다면 문자를 넣고 다음 반복문을 실행한다.
  3. 스택이 비어있지 않다면 제일 위의 문자와 현재 넣으려는 문자가 같은지 확인한다.
  4. 같은 문자라면 pop을 사용해 해당 문자와 현재 넣으려는 문자를 제거한다.
  5. 같은 문자가 아니라면 그냥 push 해준다.
  6. 문자열 검사를 다 끝내고, stack이 비어있다면 짝지어 모든 문자를 제거했다는 뜻으로 answer=1을 리턴한다.
  7. 반면에 stack이 비어있지 않다면 문자를 더이상 제거할 수 없기 때문에 answer=0을 리턴한다.

전체 코드

import java.util.Stack;
class Solution
{
    public int solution(String s)
    {
        int answer = 1;

        //주어진 s의 길이가 홀수라면 무슨 짓을 하던 마지막에 1개가 남는다.
        if(s.length()%2==1) return 0;
        
        Stack<Character> stack = new Stack<>();
        
        for(int i=0;i<s.length();i++){
            //stack 비어있으면 검사할 필요없이 문자 넣음.
            if(stack.isEmpty()){
                stack.push(s.charAt(i));
                continue;
            }
            //stack의 제일 위의 문자와 넣을 문자가 같다면 pop
            if(stack.peek()==s.charAt(i))
                stack.pop();
            //같은 문자가 아니라면 push해줌.
            else
                stack.push(s.charAt(i));
        }
        if(!stack.isEmpty())
            answer=0;
        
        return answer;
    }
}

'Algorithms(CT)' 카테고리의 다른 글

[프로그래머스][Java] Lv.2 영어 끝말잇기  (0) 2023.06.10
[프로그래머스][Java] Lv.2 게임 맵 최단거리  (0) 2023.06.09
[프로그래머스][Java] Lv.2 피보나치 수  (0) 2023.06.07
[프로그래머스][Java] Lv.4 도둑질  (0) 2023.06.07
[프로그래머스][Java] Lv.3 등굣길  (0) 2023.06.06
'Algorithms(CT)' 카테고리의 다른 글
  • [프로그래머스][Java] Lv.2 영어 끝말잇기
  • [프로그래머스][Java] Lv.2 게임 맵 최단거리
  • [프로그래머스][Java] Lv.2 피보나치 수
  • [프로그래머스][Java] Lv.4 도둑질
gwee_99
gwee_99
bE bETTER!
  • gwee_99
    얼렁이와 뚱땅이
    gwee_99
  • 전체
    오늘
    어제
    • ====Category====
      • Algorithms(CT)
        • Programmers
        • Baekjoon
        • Goorm
      • Web
        • Error 해결
      • BackEnd
        • Spring
        • JPA
      • FrontEnd
        • HTML.CSS
        • JavaScript
      • Language
        • Java
      • Cloud
      • CSTS
      • Books
        • IT 5분 잡학사전
      • 일상
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    BOJ
    Lv.1
    백준
    호텔 대실
    제대로 파는 자바스크립트
    존안님
    코딩테스트
    자바
    lv.4
    인프런
    따라하며 배우는 html css
    LV.3
    구름
    DFS
    DP
    구름톤 챌린지
    LV.2
    IT 5분 잡학사전
    프로그래머스
    그리디
    BFS
    노마드코더
    IT 잡학사전
    lv2
    Til
    HTML
    Greedy
    java
    스택
    개발자북클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwee_99
[프로그래머스][Java] Lv.2 짝지어 제거하기
상단으로

티스토리툴바