인프런 커뮤니티 질문&답변

최찬호님의 프로필 이미지
최찬호

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-K

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

작성

·

411

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

 

 

최찬호님의 프로필 이미지
최찬호

작성한 질문수

질문하기