글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

7단계 마지막 문제였습니다. 개인적으로 좀 어려웠던 문제였습니다. 알파벳 배열에 아스키 코드를 이용해서 문제를 해결하는게 조금 어색해서 방향을 못찾고 괜한 for문만 엄청 돌렸었습니다. 결국 https://st-lab.tistory.com/69 를 참고해서 풀었습니다. 감사합니다.

한 이틀은 고민했습니다. 어려웠던 만큼 정리를 조금 하도록 하겠습니다.

 

1. 바로 전 글자와 현재 글자를 비교해서 다르다면 배열에 true를 입력해주고 전 글자에 현 글자를 입력해 준다. 

2. 바로 전 글자와 다른데 해당 알파벳 배열이 이미 true라면 그룹 단어가 아니다.

 

정답

import java.util.*;

public class Main{
    static Scanner sc = new Scanner(System.in);
    
    public static void main(String[] args){
        int wordCount = sc.nextInt();
        int gwCount = 0;
        for(int i = 0; i < wordCount; i++){
            if(check() == true){
                gwCount++;   
            }
        }
        
        System.out.println(gwCount);
    }
    
    public static boolean check(){
        boolean[] alp = new boolean[26];
        int prv = 0;
        
        String s = sc.next();
        
        for(int i = 0; i < s.length(); i++){
            int now = s.charAt(i);
            
            if(prv != now){
                if(alp[now - 'a'] == false){
                    alp[now - 'a'] = true;
                    prv = now;
                }
                else{
                    return false;
                }
            }
        }
        
        return true;
        
        
    }
}