Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 9324번 : 진짜 메세지 본문
https://www.acmicpc.net/problem/9324
구현 문제.
단순히 문제대로 진행하면 된다.
핵심은
형광펜을 칠한 내용을 보면 끝이다.
" 각 문자가 세 번 등장할 때 (그 다음에) 한 번 더 문자가 삽입된다. "
즉, aaba 라는 문자가 있다면
a가 3번 등장했기 때문에
그 다음 문자는 무조건 a여야 한다.
aaba -> aabaa
이에 대한 예외처리와
알파벳 대문자 26개로만 구성되어 있기 때문에
A의 아스키코드가 65임을 고려했을 때
알파벳 대문자 - 65('A') 의 값을 index로 하는 int 배열을 생성하여
알파벳 하나하나 카운팅해주면 훨씬 좋다.
그럼 곰방 끝난다!!!
감사합니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 진짜 메세지
// 구현 문제
public class p9324 {
static int ASCII = 65; // A : 65
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int tc = Integer.valueOf(st.nextToken());
StringBuilder sb = new StringBuilder();
while(tc --> 0) {
st = new StringTokenizer(br.readLine());
String msg = st.nextToken();
char[] msgCharArr = msg.toCharArray();
int[] alphabet = new int[26];
boolean isValid = true;
// 알파벳 개수 카운트
for(int i = 0; i < msgCharArr.length; i++) {
int gap = msgCharArr[i] - ASCII;
alphabet[gap]++;
if(alphabet[gap] == 3) {
if(i + 1 >= msgCharArr.length) {
isValid = false;
break;
}
if(msgCharArr[i] == msgCharArr[i + 1]) {
alphabet[gap] = 0;
i++;
}
else {
isValid = false;
break;
}
}
}
if(isValid) {
sb.append("OK").append("\n");
}
else {
sb.append("FAKE").append("\n");
}
}
System.out.println(sb.toString());
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 2161번 : 카드1 (0) | 2020.04.23 |
---|---|
(JAVA) 백준 5543번 : 상근날드 (0) | 2020.04.23 |
(JAVA) 백준 9517번 : 아이 러브 크로아티아 (0) | 2020.04.22 |
(JAVA) 백준 3055번 : 탈출 (0) | 2020.04.21 |
(JAVA) 백준 14891번 : 톱니바퀴 (0) | 2020.04.20 |
Comments