[프로그래머스](java) lv2 (2017 팁스타운) 짝지어 제거하기

2025. 3. 10. 17:25·코테/java

1. 문제 설명

2. 나의 풀이

    import java.util.Stack;
    public int solution(String s)
    {
        s = s.replaceAll(" ", "");
        
        Stack<Character> st = new Stack<>();

        for(int i = 0; i < s.length(); i++)
		{
        	if(i == 0 || st.empty())
			{
        		st.push(s.charAt(i));
			}
        	else
        	{
        		if(st.peek() == s.charAt(i))
				{
        			st.pop();
				}
        		else
        		{
        			st.push(s.charAt(i));
        		}
        			
        	}
		}

        return st.isEmpty()? 1: 0;
    }

 

풀고 뿌듯해서 박수쳤는데 생각해보니까 if(i == 0 || st.empty()) 는 그냥 st.empty 하나만 있어도 되는거였다.. i가 0이면 당연히 비어있을테니까

3. 다른 사람의 풀이

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        // 문자열을 캐릭터 배열로 변환
       char[] c = s.toCharArray();
       ArrayList<Character> list = new ArrayList<>();

       // 캐릭터를 하나씩 리스트에 삽입
       for(char _c : c){
           Add(list, _c);
       }

       // 만약 리스트가 비었다면 짝지거 제거 완료
       if(list.isEmpty()){
           return 1;
       }
       else {
           return 0;
       }
    }

     // 리스트에 캐릭터 하나씩 삽입하는 함수
    public static void Add(ArrayList _list, char _c){
        _list.add(_c);

        // 만약 리스트의 길이가 2보다 크고 && 마지막 두 원소가 같은 캐릭터라면
        if(_list.size() > 1 && (_list.get(_list.size() - 2) == _list.get(_list.size() - 1))){
                // 마지막 두 원소 제거
                _list.remove(_list.size() - 1);
                _list.remove(_list.size() - 1);
        }
    }
}

stack 없이 푸신 분의 풀이를 들고 왔다.
list에 하나씩 넣을때마다 원소를 제거할 지 검증할 수 있는 함수(Add)를 실행시켜준다. 

저작자표시 비영리 (새창열림)

'코테 > java' 카테고리의 다른 글

[프로그래머스](java) lv 1 2018 KAKAO BLIND RECRUITMENT 비밀지도  (1) 2025.04.17
[프로그래머스][java] lv 1 시저 암호  (0) 2025.02.12
[프로그래머스][java] lv 1 최소직사각형  (1) 2025.01.17
[프로그래머스][java] lv 1 월간 코드 챌린지 시즌1 3진법 뒤집기  (3) 2025.01.15
[프로그래머스][java] lv1 이상한 문자 만들기  (0) 2025.01.10
'코테/java' 카테고리의 다른 글
  • [프로그래머스](java) lv 1 2018 KAKAO BLIND RECRUITMENT 비밀지도
  • [프로그래머스][java] lv 1 시저 암호
  • [프로그래머스][java] lv 1 최소직사각형
  • [프로그래머스][java] lv 1 월간 코드 챌린지 시즌1 3진법 뒤집기
니누고
니누고
주니어 개발괴발자
  • 니누고
    진땡이코딩조림
    니누고
  • 전체
    오늘
    어제
    • 분류 전체보기 (93)
      • 편안한코딩생활 (12)
        • 오류 해결 일지 (6)
        • 기타등등 (6)
      • 백 (23)
        • jsp (1)
        • spring boot (7)
        • spring (7)
        • 전자정부프레임워크 (8)
      • 프로젝트 (13)
        • 블로그 제작(중단) (12)
      • 프론트 (3)
        • javascript (3)
      • 데이터베이스 (6)
        • oracle (5)
        • 그 외 (1)
      • cs (6)
        • java (4)
        • cs (1)
        • C (1)
      • 코테 (26)
        • java (25)
        • sql (1)
      • 앱 (0)
        • flutter (0)
        • dart (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    SpringBoot
    프로그래머스
    spring
    중복된 문자 제거
    apache
    가장 큰 수 찾기
    JPA
    카카오 블라인드 채용
    mod_jk.log
    문자열 정렬하기
    컴퓨터용량줄이기
    iBatis
    스프링의 기본 파싱전략
    oracle함수
    오블완
    배열 회전시키기
    Java
    CRUD
    대문자와소문자
    2017팁스다운
    jpa #springboot
    egov
    전자정부프레임워크
    tomcat
    Eclipse
    배열
    Oracle
    함수
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
니누고
[프로그래머스](java) lv2 (2017 팁스타운) 짝지어 제거하기
상단으로

티스토리툴바