Anagram 제출결과 오답처리되었습니다. 문제가 없어보이는데 여러분들의 의견 구합니다.

  • cardbt
    cardbt

    안녕하세요.

    아래와 같이 코드를 작성했습니다만, 오답처리되었습니다.
    오답에 대한 테스트 케이스가 제공되지 않아 무엇이 문제인지 파악이 안되네요.

    기본 알고리즘은 입력된 문자열이 AlphaNumeric만 입력되므로 Ascii코드값에 의거하여 입력된 문자열의 문자를 배열의 인덱스로 사용하는데 있습니다.

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) { 
            Scanner in = new Scanner(System.in); 
    
            int tCase = in.nextInt();
            int[] alpa = new int[200];
            boolean[] result = new boolean[tCase];
    
            for (int t = 0; t < tCase; t++) {
                // 기존 문자열 처리시 사용하므로 초기화해줌
                for (int i = 0; i < alpa.length; i++) {
                    alpa[i] = 0;
                }
    
                String input = in.next();    // 첫 문자열 입력 받음
                int length = input.length(); // 길이 확인
                // 문자열에 사용된 문자에 대한 배열값을 증가시켜줌
                for (char c : input.toCharArray()) {
                    alpa[c]++;
                }
    
                String anagram = in.next();  // 두번째 문자열 입력 받음
                // 첫번째 문자열과 두번째 문자열의 길이가 다르면 실패로 처리하고 다음 케이스로 넘어감
                if (length != anagram.length()) {
                    result[t] = false;
                    continue;
                }
    
                // 두번째 문자열에서 사용된 문자를 배열값에서 차감해줌
                for (char c : anagram.toCharArray()) {
                    alpa[c]--;
                    if (alpa[c] < 0) { // 만약 배열값이 -가되면 기존에 없는 문자열을 사용한 것이므로 종료 처리
                        result[t] = false;
                        break;
                    } 
                    length--; // 사용처리를 위해 문자열을 빼줌.
                }
    
                if (length == 0)  // 모든 문자가 사용되었으므로 성공처리
                    result[t] = true;
            }
            for (int t = 0; t < tCase; t++) {
                System.out.println(result[t] ? "Yes" : "No.");
            }
            in.close();
        }
    }
    

    8년 전
1개의 댓글이 있습니다.
  • hyunhwan
    hyunhwan

    조건을 하나 빠트리신 것 같습니다.

    the device’s serial number exactly once in a case-sensitive way, and not in the same order as the original number

    문제의 조건에 따르면 똑같은 문자열에 대해서는 No.로 처리되야 합니다.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.