• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

1 - k 반례가 무엇인지 모르겠습니다. (JAVA)

23.05.30 10:35 작성 조회수 329

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

최찬호님의 프로필

최찬호

질문자

2023.05.30

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;
            }