Scroll indicator done
728x90

https://www.acmicpc.net/problem/1411

 

1411번: 비슷한 단어

첫째 줄에 단어의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 한 줄에 하나씩 단어가 주어진다. 단어의 길이는 최대 50이고, N은 100보다 작거나 같은 자연수이다. 모든 단어의 길이는 같고, 중복

www.acmicpc.net

 

 

코드
package com.example.algorithm.study.week8;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

// 처음에는 zbxz 가 abca 로 바뀌는 것 조차 이해가 잘 안 됐었다.
// 하나의 알파벳으로 바꿨다면 다른 알파벳은 해당 알파벳으로 바꿀 수 없다?
// 약간 각각의 단어에 겹치는? 단어의 위치라고 해야할까 그걸 같은 걸 찾는다? 부터 생각 시작
// a 부터 시작하는 건 모든 단어를 같은 단어로 만들기 위한 수단..? 이라고 할까나 
public class B1411 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] strArray = new String[n];
        for (int i = 0; i < n; i++) {
            String s = br.readLine();
            strArray[i] = s;

            StringBuilder tmp = new StringBuilder();
            Map<Character, Character> map = new HashMap<>();
            char c = 'a';
            for (int j = 0; j < s.length(); j++) {
                if (!map.containsKey(s.charAt(j))) {
                    map.put(s.charAt(j), (char) (c));
                    c++;
                }
                tmp.append(map.get(s.charAt(j)));
            }

            strArray[i] = tmp.toString();
            System.out.println(map);
        }

        int cnt = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (strArray[i].equals(strArray[j])) {
                    cnt++;
                }
            }
        }
        System.out.println(cnt);
    }
}

728x90

'BAEKJOON > Java' 카테고리의 다른 글

[B14501][퇴사][java]  (0) 2023.10.10
[B16508][전공책][java]  (0) 2023.10.10
[B1503][세 수 고르기][java]  (0) 2023.10.10
[B12919][A와 B 2][java]  (0) 2023.10.09
[B1548][부분 삼각 수열][java]  (0) 2023.10.08