백준 3986 좋은 단어 JAVA

sundays·2024년 8월 8일
0

문제

좋은 단어

풀이

이 문제는 처음에는 replace로 하려고 했다 좋은 단어의 조건은 인접한 것끼리 묶어서 단어에서 제외해주면 되기 때문에
replace('AA','').replace('BB','') 를 해주면 되지 않을까 그런 다음 남아있는 값이 아무것도 없다면 그것은 좋은 단어 일 것 이다.

하지만 이 문제는 스택이기 때문에 스택의 아이디어로 푼다면 처음에 스택이 비어있을때는 현재 값을 무조건 스택에 값을 넣어주고 스택에 값이 존재 한다면 스택에 가장상위에 있는 값과 비교해서 같으면 스택에 있는 값을 빼주고, 다르면 스택에 현재 값을 넣어준다.
그런다음 스택에 남아있는 값이 없다면 그것은 좋은 단어라는 것이다.

Stack<Character> stack = new Stack();

while (n-- > 0) {
	String s = br.readLine();
    for (int i = 0; i < s.length(); i++) {
    	char c = s.charAt(i);
        // 값이 존재 하지 않으면 비교해줄 대상을 늘려준다
       	if (stack.isEmpty()) {
        	stack.push(c);
        } else {
        	if (stack.peek() == c) { // 인접한 단어가 현재 단어와 일치한다
            	stack.pop();
            } else {
            	stack.push(c);
            }
        }
        
        if (stack.isEmpty()) {
        	answer++;
        }
    }
}

전체 코드

전체 코드

profile
develop life

0개의 댓글