📌 고정 게시글

📢 공지합니다

이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.

최코딩의 개발

[백준 2607번] 비슷한 단어 본문

코딩테스트/백준

[백준 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