문제 링크
주의사항
- 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;
}
}
'백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)2292번, 벌집 (0) | 2021.12.28 |
---|---|
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)1712번, 손익분기점 (0) | 2021.12.28 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)2941번, 크로아티아 알파벳 (0) | 2021.12.25 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)5622번, 다이얼 (0) | 2021.12.22 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)2908번, 상수 (0) | 2021.12.22 |
댓글