[프로그래머스] Lv2 짝지어 제거하기

changi123·2023년 8월 23일
0
post-thumbnail

문제설명

코드

import java.util.*;
class Solution
{
    public int solution(String s)
    {
               int answer = 0;
     
        if(s.length()== 1) {
        	return answer;
        	
        }
        
        Stack<Character> st = new Stack();
        
        for (char c  : s.toCharArray()) {
			if(!st.isEmpty() &&  st.peek() == c) {
			st.pop();
	
			} else {
				st.push(c);
			}
		}
        
        if(st.isEmpty()) {
        	answer = 1;
        	
        } else {
        	answer= 0 ;
        }
        
        return answer;
    }
}

내 코드 설명

(1) 문자열의 길이가 == 1 즉, 한 문자라면 어차피 짝이 될 수 없으니 0을 return ;
(2) Character 타입으로 제네릭 지정하여 스택 객체 st 선언
(3) for-each 구문을 활용하여 char c 에 각 자리의 알파벳을 넣고 스택 객체가 비어있지 않고 만약 스택 객체를 조회한 알파벳과 char c가 일치한다면 st.pop(); 을 이용해 해당 알파벳을 꺼낸다.
그렇지 않다면 스택 객체 st에 해당 알파벳 push() 메소드로 추가
(4) 만약 스택 객체 st 가 비어있다면 1을 반환 비어있지 않다면 0을 반환

다른 사람 풀이

다른 사람 코드 설명

느낀점

문자열을 짝 짓는 문제는 보통 스택을 활용하여 풀어보자
for-each, 제네릭에 대해 정리해보자

  • for-Each
    for( 각 요소 값 : 배열이나 컨테이너 값 )

    {

     반복 수행할 코드

    }

foreach 구문도 잘 기억해두자

  • 제네릭
    - 제네릭이란 데이터타입을 일반화한다고 생각하면 쉬운 것 같다. 클래스 내부에서 데이터 타입 지정해주는 것이 아닌 외부에서 사용자에 의해 지정되는 것
  • 제네릭의 장점
    (1) 잘못된 타입이 들어오는 것을 컴파일 단계에서 방지할 수 있다.
    (2) 클래스 외부에서 데이터 타입을 지정해주기 때문에 관리가 편리하다.
profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보