해결된 질문
작성
·
43
0
http://boj.kr/24eb99ddd0bb4e11af50a5e4579c8107
해당 문제에 대해서 진짜 많이 고민해보았는데, 원인을 알 수가 없습니다..
기본적인 부분에서 틀린 것 같은데, 코드가 지저분한 것 같아서 그런지 봐도 문제가 무엇인지 잘 모르겠습니다 ㅠㅠ
답변 2
0
안녕하세요 ㅎㅎ
지금의 코드는 끝자리 알파벳 z가 홀수인경우 바로 for문이 종료되게 됩니다. 이부분에 대한 반례가 생기는 것이죠 ㅎㅎ
이렇게 해보시겠어요? 그리고 exit(1)이 아니라 return 0을 해야 합니다.
for (int i = 0; i < 26; i++) {
if (arr[i] % 2 == 1) { // 영어 이름에서 스펠링이 '홀수'개 나온 것들 찾음
odd_cnt++;
ans += (char)(i + 65); // 빈 ans 문자열에 추가하면 자연스럽게 중앙에 오게 됨
arr[i]--; // 중앙에 해당 스펠링을 배치하고 하나만큼 감소 -> 해당 스펠링은 다시 짝수개로 변함
}
if (odd_cnt > 1) { // 영어 이름에서 스펠링이 '홀수'개 나온 것이 '홀수'개 존재하면 펠린드롬이 될 수 없음
cout << "I'm Sorry Hansoo";
return 0;
}
}
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. Dongni님.
펠린드롬 문제에서 2%에서 실패한다면, 대개는 특정한 조건이나 예외 케이스를 놓쳤을 가능성이 큽니다. 이와 유사한 문제에 대한 논의가 있었던 링크들을 공유드리니 참고하시기 바랍니다.
이 답변을 통해 문제의 패턴을 이해하고, 코드 검사에 있어 초기화나 조건 검토의 중요성을 확인해 보시기 바랍니다. 특히, 지역 변수 사용 시 초기화를 반드시 확인하고 전역 변수로 변경하는 경우도 고려해 보세요. 이는 알고리즘이 예상 외의 데이터를 처리할 때의 문제점을 바로잡는 데 유용합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
"난 아직 배고프다"