Java/Java 알고리즘

백준 9946번 단어 퍼즐 JAVA 구현해보기

kimc 2022. 6. 2. 12:13

```

백준 9946번 단어 퍼즐 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 9946번 풀이

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

 

9946번: 단어 퍼즐

케이스마다 번호를 붙여서 예제출력과 같은 형식으로 출력한다. 준하가 알파벳을 제대로 회수했다면 same 을, 잘못 회수했다면 different 를 출력한다.

www.acmicpc.net

백준 9946번 단어 퍼즐은

난이도 브론즈 등급의 문제로서

 

테스트 케이스만큼

순서가 다른 두 알파벳 문자열이 주어지면

해당되는 알파벳들이

동일한 개수의 각 알파벳 문자를 가지는지 판별해서 출력하면 됩니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


알파벳 배열을 만들어서

해당되는 배열에 첫 번째 입력에 각 알파벳만큼 숫자를 증가시켜주고

해당되는 배열에 두 번째 입력에 각 알파벳만큼 숫자를 감소시켜준 다음

음수가 있는지 확인해서 판별했습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws IOException {
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final String END = "END";
        
        StringBuilder sb = new StringBuilder();
        int num = 1;
        while (true) {
            final String input01 = br.readLine();
            final String input02 = br.readLine();
            if (input01.equals("END") && input02.equals("END")) {
                break;
            }
            sb.append("Case ").append(num).append(": ").append(hasSameLowerAlphabet(input01, input02)).append("\n");
            num++;
        }

        if (sb.length() > 1) {
            sb.setLength(sb.length() - 1);
        }
        System.out.print(sb);
    }

    private static String hasSameLowerAlphabet(String input01, String input02) {
        final int[] checkArr = new int[26];
        final String SAME = "same";
        final String DIFFERENT = "different";

        input01.chars().forEach(ch -> ++checkArr[ch - 'a']);
        input02.chars().forEach(ch -> --checkArr[ch - 'a']);

        return Arrays.stream(checkArr).filter(n -> n < 0).findFirst().isPresent() ? DIFFERENT : SAME;
    }
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90