Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 9933번 : 민균이의 비밀번호 본문
https://www.acmicpc.net/problem/9933
문자열 처리 문제이다.
풀이 방법은 간단한데,
2중 for문을 통해 String 단어 두 개씩 꺼내서 각각의 양 끝 문자부터 시작해서 비교해나간다.
그래서 서로 반대에서 시작했는데 끝 지점까지 문자가 동일하다면 그 문자가 정답인 셈.
하지만, 여기서 컴파일 에러 라는 문제가 발생했는데...
그 이유는 바로 팰린드롬 인 단어가 있는 경우에 대한 처리를 못했다는 것이었다..!
팰린드롬이란, 앞 뒤를 뒤집어도 뒤집기 전과 같은 단어를 뜻한다.
이를 해결하기 위해 String 배열에서 단어 두 개를 꺼내 놓고 서로의 양 끝에서부터 비교했었는데
단어 하나만 놓고 그 단어의 양 끝에서 시작해서 문자를 비교하는 코드도 넣었다!
다음 문제는 팰린드롬 문제다..
소스 코드
package string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
// 민균이의 비밀번호
// 문자열 처리. 같은 길이의 문자열을 양 끝에서부터 같은지 탐색하기
public class p9933 {
static ArrayList<String> pwds;
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.valueOf(st.nextToken());
pwds = new ArrayList<String>();
for(int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
pwds.add(st.nextToken());
}
int getIndex = getSameStrIndex(n);
String result = pwds.get(getIndex);
System.out.println(result.length() + " " + result.charAt(result.length() / 2));
}
// 양 끝에서 시작하면 똑같은 문자가 있는지 탐색해서 존재하면 그 문자의 인덱스를 리턴하는 함수.
private static int getSameStrIndex(int n) {
for(int i = 0; i < n; i++) {
String a = pwds.get(i);
for(int j = i; j < n; j++) {
String b = pwds.get(j);
if(a.length() == b.length()) {
if(compare(a, b, a.length())) {
return i;
}
}
}
}
return -1; // 없는 경우
}
// 두 개의 문자를 각자의 양 끝에서 비교하는 함수
private static boolean compare(String a, String b, int len) {
for(int i = 0; i < len; i++) {
int j = len - i - 1;
char aChar = a.charAt(i);
char bChar = b.charAt(j);
if(aChar != bChar) {
return false;
}
}
return true;
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 1972번 : 놀라운 문자열 (0) | 2020.03.02 |
---|---|
(JAVA) 백준 10942번 : 팰린드롬? (0) | 2020.03.01 |
(JAVA) 백준 2857번 : FBI (Feat. 정규표현식 정리 표) (0) | 2020.02.29 |
(JAVA) 백준 7562번 : 나이트의 이동 (0) | 2020.02.29 |
(JAVA) 백준 1120번 : 문자열 (0) | 2020.02.23 |
Comments