언어, 알고리즘 공부/백준

[백준 알고리즘] 1316번 그룹 단어 체커(Python 3, Java)

쿠몬e 2020. 2. 12. 17:41

 

 

<Python 3>

n = int(input())
result = 0

for i in range(n):
    line = input()
    a = {}  # 빈 딕셔너리 생성
    count = 0
    for j in range(len(line)):

        if line[j] in a and a[line[j]] == (j-1): #문자가 연속해서 나타날 경우
            a[line[j]] = j
        elif line[j] in a and a[line[j]] != (j-1): #문자가 연속하지 않을 경우
            break
        else: #문자가 딕셔너리에 없는 경우 딕셔너리에 추가
            a[line[j]] = j
        count += 1
    if count == len(line):
        result += 1
print(result)

 

<Java>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int count = 0;

        for(int i=0; i<n; i++){
            int[] alpha = new int[26];
            Arrays.fill(alpha, -1);
            boolean check = true;
            String word = br.readLine();

            for(int j=0; j<word.length(); j++){
                int idx = word.charAt(j)-'a';
                if(alpha[idx] == -1 || alpha[idx] == (j-1))
                    alpha[idx] = j;
                else{
                    check = false;
                    break;
                }
            }
            if(check)
                count++;
        }

        System.out.println(count);
    }
}

 

▼링크

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

반응형