inblog logo
|
LHS's Study Space
    알고리즘문제풀기랜덤마라톤

    [랜덤 마라톤] 단어 퍼즐(9946)

    lhs's avatar
    lhs
    Dec 11, 2024
    [랜덤 마라톤] 단어 퍼즐(9946)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리4. 다른 아이디어
    www.acmicpc.net
    https://www.acmicpc.net/problem/9946
    notion image
    notion image

    1. 문제 풀이 아이디어

    • 배열을 사용하여 단어의 문자 수를 저장하고 비교하여 문제를 해결할 수 있다.

    2. 나의 정답 코드

    public class Main { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringBuilder stringBuilder = new StringBuilder(); String s; int count = 1; while (!(s = bufferedReader.readLine()).equals("END")) { stringBuilder.append("Case " + count + ": "); String ss = bufferedReader.readLine(); int[] alp = new int[26]; for (char c : s.toCharArray()) { alp[c - 'a']++; } boolean same = true; for (char c : ss.toCharArray()) { alp[c - 'a']--; } for (int i = 0; i < 26; i++) { if (alp[i] != 0) { same = false; break; } } stringBuilder.append(same ? "same\n" : "different\n"); count++; } System.out.print(stringBuilder); bufferedReader.close(); } }

    3. 정리

    • 첫 번째 단어의 각 문자를 처리하면서 alp 배열의 값을 증가시킨다.
    • 두 번째 단어의 각 문자를 처리하면서 alp 배열의 값을 감소시킨다.
    • alp 배열에서 값이 0이 아닌 원소가 있으면 두 단어는 서로 다르다고 판단한다.

    4. 다른 아이디어

    • 맵을 사용하여 문제를 풀 수도 있다.
    • 그러나 알파벳의 수가 26개밖에 없으므로, 배열을 사용한 방법이 더 효율적이다. 맵을 사용하면 속도가 2배 느릴 수 있다.
    • 맵을 사용하였을 때 성능
      • notion image
    Share article
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리4. 다른 아이디어

    LHS's Study Space

    RSS·Powered by Inblog