백준 1316

hong030·2023년 2월 11일
0

*solved.ac 기준 실버 5단계 문제


풀이)
스택을 이용해 풀 수 있는 문제이다.
단어가 그룹단어일지 아닐지 판별하는 불린형 변수 flag를 선언해준다.

  1. 첫 문자는 무조건 스택에 넣는다.
  2. 두 번째 문자 이후로, 만약 문자가 스택 최상단 object와 같을 경우 (stack.peek(a)) 다음 문자로 넘어간다.
    2-1.만약 문자가 스택 최상단 object와 다를 경우, 해당 문자가 stack에 있다면 (이전에 언급된 적이 있다면) flag를 false로 바꾸고 그룹단어가 아니라고 체크한다.
    2-2 만약 문자가 스택 최상단 object와 다를 경우, 해당 문자가 stack에 없다면 (새로 나온 문자라면) stack에 넣고 다음 문자로 넘어간다.

내 코드)

import java.util.Stack;
import java.io.*;

public class Backjoon1316 {
	public static void main(String[]args) throws IOException{
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(bf.readLine());
		int count = 0;
		
		for(int i=0 ; i<T ; i++) {
			Stack<Character> stack = new Stack<Character>();
			boolean flag = true;
			char[]input = bf.readLine().toCharArray();
			if(input.length==1) {
				count++;
				continue;
			}
			for(int j=0 ; j<input.length ; j++) {
				if(stack.empty()) {
					stack.push(input[j]);
					continue;}
			
				if(input[j] == stack.peek()) {
					continue;
				}
				
				if(stack.contains(input[j])) {
					flag = false;
					break;
				}else {
					stack.push(input[j]);
				}
				
			}
			if(flag)
				count++;				
		}
		System.out.println(count);
	}
}

profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글