📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
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문제 이상 풀자... 심각하다..
[백준 17484번] 진우의 달 여행 (Small) (1) | 2024.12.16 |
---|---|
[백준 19941번] 햄버거 분배 (1) | 2024.12.14 |
[백준 2512번] 예산 (1) | 2024.12.12 |
[백준] 영단어 암기는 괴로워 20920번 (🥈 실버3) (0) | 2024.09.15 |
[백준] 탑 2493번 (🥇 골드5) (0) | 2024.08.23 |