코테/백준

[백준/JAVA] 2607번: 비슷한 단어

imname1am 2023. 8. 10. 10:36
반응형

🔺 문제

 

2607번: 비슷한 단어

첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine()) - 1; // 반복문 N-1번 수행하게 -1해야 함!
        String standard = br.readLine();
        int sLen = standard.length();
        
        int[] alphabet = new int[26];
        for(int i = 0 ; i < sLen ; i++) {
            alphabet[standard.charAt(i) - 'A']++;
        }
        
        int ans = 0;
        
        while(N --> 0) {    // N-1번만큼 수행
            int[] tmp = alphabet.clone();    // 📍 배열 복사 !
            
            String word = br.readLine();
            int wLen = word.length();
            
            int cnt = 0;    // 🔔 입력된 단어의 알파벳 갯수 🔔
 
            for(int i = 0 ; i < wLen ; i++) {
                if(tmp[word.charAt(i) - 'A'> 0) {
                    cnt++;
                    tmp[word.charAt(i) - 'A']--;
                }
            }
            
            // 길이가 한 글자 작을 때
            if(sLen - 1 == wLen && cnt == wLen) {
                ans++;
            }
            // 길이가 같을 때
            else if(sLen == wLen) {
                if(cnt == sLen || cnt == sLen - 1)
                    ans++;
            }
            // 길이가 한 글자 클 때
            else if(sLen + 1 == wLen) {
                if(cnt == sLen)
                    ans++;
            }  
        }
        
        System.out.println(ans);
    }
}
cs
✅ 해결 아이디어
✔ 구현, 문자열
- 비슷한 단어
= 한 문자열을 골라서 문자 하나를 추가하거나 / 빼거나 / 바꾸거나 했을 때 두 단어가 같으면 비슷한 문자 || 아예 단어 구성이 같은 문자

 

 


🔺 다른 풀이들

- 내가 Map써서 풀려고 생각했던 방식을 구현하셨다!!

 

[백준] 2607 - 비슷한 단어

문제 링크: https://www.acmicpc.net/problem/2607 그렇게 어렵진 않으나, 사소한 부분을 간과하여 틀...

blog.naver.com

 

 

[JAVA] BOJ(백준) - 비슷한 단어 - 2607

문제내용 https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있

record-developer.tistory.com


💬 느낀 점

촤하하 쉽지 않구만..

 

 

1회독 2회독 3회독 4회독 5회독
V 240301      

 


(참고)

 

백준 2607 비슷한 단어 Java

한국정보올림피아드 초등부 4번, 중등부 2번 문제인 비슷한 단어이다. 내 힘으로 풀긴 풀었지만 꽤 어려웠던 문제 같은데 이런 문제를 풀어내는 초등학생, 중학생이 있다니 더욱더 분발해야겠다

dundung.tistory.com

 

(좋은 설명...)

 

백준 2607 비슷한 단어(Java)

문제 출처 : https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져

jyunslog.tistory.com

 

반응형