자바로 백준 1544 풀기

hong030·2023년 4월 1일
0
  • 실버 4단계 문제

풀이)
처음엔 입력받은 문자열을 정렬한 후 배열을 set으로 바꿔 중복을 없애는 식으로 풀었으나, 그렇게 되면 'apple'과 'paple'을 같은 단어로 인식하게 된다.
어차피 입력은 최대 길이 50의 문자열 최대 50개이므로 차라리 입력받은 한 단어에 대한 모든 조합을 만들고, 다음 문자열들과 이를 비교해가며 중복을 지우는 편이 낫다.

내 코드)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        ArrayList<String>[] arr = new ArrayList[n];
        int cnt = 0;
        for (int i = 0; i < n; i++) {
            arr[i] = new ArrayList<>();
            String cur = br.readLine();
            for (int j = 0; j < cur.length(); j++)
                arr[i].add(cur.substring(j) + cur.substring(0, j));

            boolean chk = true;
            for (int j = 0; chk && j <= i-1; j++) {
                for (int k = 0; chk && k < arr[j].size(); k++) {
                    if (cur.equals(arr[j].get(k))) chk = false;
                }
            }
            if (chk)
                cnt++;
        }
        System.out.println(cnt);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글