인프런 커뮤니티 질문&답변
1 - k 반례가 무엇인지 모르겠습니다. (JAVA)
작성
·
483
0
안녕하세요. 큰돌님 강의 잘 듣고있습니다.
다름이 아니라 아래 코드에서 어떠한 이유로 통과가 안되는지 이유를 모르겠습니다. 감사합니다.
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] cnt = new int[26];
        br.readLine().chars().forEach(i -> cnt[i - 'A']++);
        boolean checkOdd = false;
        char oddChar = '0';
        StringBuilder sb = new StringBuilder();
        for (int i = cnt.length - 1; i >= 0; i--) {
            if (cnt[i] == 0) continue;
            if (checkOdd && (cnt[i] & 1) == 1) {
                sb.setLength(0); //
                sb.append("I'm Sorry Hansoo");
                break;
            }
            if ((cnt[i] & 1) == 1) {
                oddChar = (char) (i + 'A');
                checkOdd = true;
                cnt[i]--;
            }
            for (int j = 0; j < cnt[i] / 2; j++) {
                sb.append((char) (i + 'A'));
                sb.insert(0, (char) (i + 'A'));
            }
        }
        if (Character.isLetter(oddChar)) {
            sb.insert(sb.length() / 2, oddChar);
        }
        System.out.print(sb.toString());
    }답변 2
0
0
최찬호
질문자
if (checkOdd && (cnt[i] & 1) == 1) {
                sb.setLength(0); //
                sb.append("I'm Sorry Hansoo");
                break;
            }
// 를 아래와 같이 변경해서 해결했습니다.
// "I'm Sorry Hansoo"로 만들고 아래서 추가적인 문자열을 생성하고 있었습니다.
if (checkOdd && (cnt[i] & 1) == 1) {
                System.out.println("I'm Sorry Hansoo");
                return;
            }





