본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)1316번, 그룹 단어 체커

by 열정적인 이찬형 2021. 12. 25.

문제 링크

1316번: 그룹 단어 체커
 
www.acmicpc.net
 
 

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

  • BufferedReader를 사용하여 문자열 받는 반복횟수를 저장하였습니다.
  • 그룹 단어를 확인하는 함수 groupWordChecker를 만들었습니다.
  • 알파벳을 사용한 횟수를 저장하는 배열을 통하여 똑같은 알파벳이 나왔을 때는 그룹단어가 아닌 것을 알렸습니다.
  • 알파벳을 저장하고 이후 알파벳을 받아서 달라질 경우에 그 알파벳에 그룹이 끝났다고 판정하고 횟수를 +1
  • 이후 반복하여 다음 알파벳이 달라졌는데 그룹이 끝났다고 판정했었던 알파벳인 경우 그룹단어가 아니라고 판단
  • 그룹 단어인 경우 1, 그룹 단어가 아닌 경우 0을 리턴
  • for문을 통하여 BufferedReader로 문자열을 받고 groupWordChecker를 통하여 그룹 단어인지 확인하여 결과에 더하였습니다.
  • 결과를 bw에 저장하였습니다.
  • BufferedWriter를 통해 저장된 결과를 출력하였습니다.

결과 코드

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //입력 값을 받는 BufferedReader
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //결과를 출력하는 BufferedWriter
        int index = Integer.parseInt(br.readLine());	//문자열 받는 횟수
        int result=0;					//결과 값 초기화
        for(int i=0;i<index;i++) {       		//받는 횟수만큼 함수 사용으로 결과값 구하기
        	String text = br.readLine();
        	result+=groupWordChecker(text);
        }
        bw.write(result + "\n");			//결과 bw에 저장
        bw.flush();					//결과 출력
        bw.close();
        br.close();
    }
    public static int groupWordChecker(String text) {		//그룹 단어 체커 함수
    	int[] arr = new int[26];				//알파벳 사용 횟수 배열
    	boolean check= false;					//문자열이 그룹 단어인지 확인형 변수
    	char temp = text.charAt(0);				//첫 번째 글자 받기
       	for(int j=1;j<text.length();j++) {
    		if(temp != text.charAt(j)) {			//그룹 단어인지 체크 확인
    			if(arr[text.charAt(j)-97] !=0) {	
    				check = true;
    				break;
    			}else {
    				arr[temp-97]++;
    				temp = text.charAt(j);
    			}
    		}
    	}
       	if(check)						//그룹 단어이면 1 아니면 0을 리턴
       		return 0;
       	else
       		return 1;
    }
}

댓글