https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
주의점
- 문자열의 문자가 연속되지 않아야 함 + 이전에 해당 문자가 입력된 적이 있으면 그룹 단어가 아님
- 그룹 단어의 개수 출력
풀이
1. Scanner
import java.util.Scanner;
public class Main {
/*
main & check 함수에서 Scanner 쓰기에
main 함수 밖에 전역 변수로 static 붙인 Scanner 생성
*/
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int count = 0;
int N = in.nextInt();
for (int i = 0; i < N; i++) {
if (check() == true) {
count++;
}
}
System.out.println(count);
}
public static boolean check() {
boolean[] check = new boolean[26];
int prev = 0;
/*
문자열 입력 받을 때 nextLine() 쓰면 에러 발생
개행이 버퍼에 남아있기에 다음 입력 때 개행이 str에 저장됨
*/
String str = in.next();
for(int i = 0; i < str.length(); i++) {
int now = str.charAt(i); //i 번째 문자 저장(현재 문자)
//이전 문자와 i 번째 문자가 불일치하면
if (prev != now) {
//해당 문자가 처음 나올 때(= false 일 때)
if (check[now - 'a'] == false) {
check[now - 'a'] = true;
prev = now; //다음 순서 위해 prev 값 변경
} else {
//해당 문자가 이미 나온 적이 있을 때(= 그룹 단어가 아니게 됨)
return false; //함수 종료
}
} else {
//이전 문자와 i 번째 문자가 일치하면(= 연속된 문자)
//else 문 생략 가능
continue;
}
}
return true;
}
}
2. BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
/*
BufferedReader 는 예외로 IOException 던짐
입력이 반드시 들어가는 main & check 함수 옆에 throws IOException 추가
*/
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int count = 0;
int N = Integer.parseInt(br.readLine()); //String to int
for (int i = 0; i < N; i++) {
if (check()) {
count++;
}
}
System.out.print(count);
}
public static boolean check() throws IOException {
boolean[] check = new boolean[26];
int prev = 0;
String str = br.readLine();
for(int i = 0; i < str.length(); i++) {
int now = str.charAt(i);
if (prev != now) {
if (!check[now - 'a']) {
check[now - 'a'] = true;
prev = now;
} else {
return false;
}
}
}
return true;
}
}
성능
- BufferedReader > Scanner
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2292번 : 벌집 - Java (0) | 2022.03.23 |
---|---|
[백준] 1712번 : 손익분기점 - Java (0) | 2022.03.22 |
[백준] 2941번 : 크로아티아 알파벳 - Java (0) | 2022.03.22 |
[백준] 5622번 : 다이얼 - Java (0) | 2022.03.21 |
[백준] 2908번 : 상수 - Java (0) | 2022.03.21 |
댓글