1316 그룹 단어 체커 [문자열/Silver 5]

최유연·2021년 9월 5일
0

📋 문제 :

1316 그룹 단어 체커

💡 풀이 설명 :

python 코드 설명 :
우선 변수 tmp,cmp를 선언하여 tmp엔 입력된 단어를 구성하는 문자 중 직전 문자와 중복되지 않는 문자들을 담아준다.
그리고 tmp를 구성하는 단어들로 또 다시 중복 체크를 해주는데, 이번엔 tmp를 구성하는 문자 중 유일한 문자들만 cmp에 저장해준다.
만약 그룹 단어라면 tmp와 cmp가 동일할 것이고, 그룹 단어가 아니라면(tmp에 중복된 글자가 있다면) tmp와 cmp가 불일치 할 것이다.

java 코드 설명 :
알파벳 순서대로 존재 여부를 저장할 boolean 배열을 생성한다. 입력된 단어를 차례대로 직전 문자와 동일한지 검사하는데, 직전 문자와 다른 문자가 등장하면 문자에 해당하는 배열 index의 원소를 True로 바꿔준다. 만일 검사 도중 직전 문자와 동일하지 않은 문자인데 이미 이전에 등장한 적이 있는 문자면 떨어져서 다시 등장한 문자라서 그룹 단어 조건을 만족 못하므로 전체 단어의 개수 중 1개를 감소시킨다. 그룹 단어 조건을 만족 못하는 단어이므로 더 이상 검사할 필요가 없으니 break문으로 검사를 중단하고 다음 단어를 입력받는다.

💻 코드 :

python

if __name__ == '__main__':
    N = int(input())
    cnt = 0
    for _ in range(N):
        s = input()
        tmp = s[0]
        cmp = ""
        for i in range(1, len(s)):
            if s[i] != s[i-1]:
                tmp += (s[i])

        for i in tmp:
            if i not in cmp:
                cmp += i
        if tmp == cmp:
            cnt += 1
    print(cnt)

java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int count = N;
        for(int i = 0; i<N;i++){
            String s = sc.next();
            boolean[] check = new boolean[26];

            for(int j = 1; j<s.length();j++){
                if(s.charAt(j) != s.charAt(j-1)){
                    if(check[s.charAt(j)-97]==true){
                        count --;
                        break;
                    }
                    check[s.charAt(j-1)-97] = true;
                }
            }

        }
        System.out.println(count);
    }
}
profile
프론트엔드 도메인 지식을 지닌 백엔드 개발자로 성장하기 위한 기록

0개의 댓글