본문 바로가기
백준알고리즘

백준알고리즘:p1316 그룹단어 체커

by socialcomputer 2021. 3. 9.

분류: 문자열

 

문제

 

코드

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
package character_string;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class p1316 {

	public static void main(String[] args) {
		try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
			int number = Integer.parseInt(br.readLine());
			
			int groupWord = number;
			
			for(int k=0; k<number; k++) {
				String s = br.readLine();
				int[] arr = new int[26];
				for(int i=0; i<s.length(); i++) { //한 단어씩 검사
					if(arr[s.charAt(i)-97]==0) {
						arr[s.charAt(i)-97] = 1; //완전처음 나온거면 1
					}
					else if(i>0 && s.charAt(i)==s.charAt(i-1) && arr[s.charAt(i)-97]==1) {//전에꺼랑 같으면 1
							arr[s.charAt(i)-97] = 1;
					}
					else {groupWord -=1; break;}
			}
			}
			bw.write(String.valueOf(groupWord)); //bw.write쓰기는 문자 출력이니까 바꿔서.. 아니면 +"\n"하거나
			bw.flush();
			
		}catch(Exception e) {e.printStackTrace();}

	}

}

▶3가지로 분류했다.

먼저 groupWord를 전체 단어 갯수로 설정한 후, 그룹단어가 아니면 빼는 식으로 풀었다.

  1. arr[x]가 0일때 알파벳이 나오면, arr[x]=1 (aacbc)
  2. 지금 알파벳이 전 알파벳과 같을때(맨 첫문자빼고i>0) && arr[x]가 1이면, arr[x]=1  (aacbc)
  3. 그 나머지 (arr[x]가 1이면서 전 알파벳과 다른 경우aacbc ) 경우에는 뒷부분 더이상 볼필요 없이 그룹단어가 아니기에 groupWord에서 1을 뺀다

 

 

 


채점결과

arr[]와 s.charAt()을 혼동하지 않게 주의, 그래서 틀렸었다..

 

링크 www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

댓글