코딩테스트/백준
[백준 2607번] 비슷한 단어
seung_ho_choi.s
2024. 12. 13. 12:15
728x90
https://www.acmicpc.net/problem/2607
package implement;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Implement2607 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] word_arr = new int[26];
int[] compare_arr;
int cnt = 0;
int answer = 0;
String word = "";
String compare = "";
for (int i = 0; i < N; i++) {
if (i == 0) {
word = br.readLine();
for (int j = 0; j < word.length(); j++) {
word_arr[word.charAt(j) - 65] += 1;
}
} else {
compare_arr = word_arr.clone();
compare = br.readLine();
if (Math.abs(word.length() - compare.length()) > 1) {
continue;
}
cnt = 0;
for (int k = 0; k < compare.length(); k++) {
int index = compare.charAt(k) - 65;
if (compare_arr[index] > 0) {
cnt++;
compare_arr[index]--;
}
}
if (word.length() - 1 == compare.length()) {
if (cnt == compare.length()) {
answer++;
}
} else if (word.length() + 1 == compare.length()) {
if (cnt == word.length()) {
answer++;
}
} else if (word.length() == compare.length()) {
if (cnt == word.length()) {
answer++;
} else if (cnt == word.length() - 1) {
answer++;
}
}
}
}
System.out.println(answer);
}
}
아 진짜 최승호.... 코테 왤케 못푸냐......
이번 문제는 조금 복잡했다. 문제 설명이 너무 빈약해서 2시간 30분 해맸다.. 얘도 결국 답지 찬스 씀.... ㅡㅡㅡㅡ
구현은 20분만에 끝냈으나 문제 설명이 애매해서 참...
일단 핵심은 첫번째 문자열 단어에서 각 단어의 수를 배열에 저장한뒤 두번째 문자열 단어부터 차례대로 비교하여 cnt를 증가시킨다. 그 후 첫번째 문자열 길이와 두번째~N번째 문자열의 길이 조건에 따라서 cnt를 비교하면 끝....
아 진심 하루에 1문제 이상 풀자... 심각하다..
728x90