작성
·
33
0
https://www.acmicpc.net/source/96522175
2-I 2870 문제 해결이 되지않아 질문드립니다.
로직은 한 문자열을 받을때마다,
숫자가 시작되는 부분과 끝나는 부분을 파악하면 담고, 없는 부분은 담지 않습니다.
다 담으면, 0으로 시작하는 부분에 대해 0을 제거하는 함수를 실행시켜 해당 원소를 앞의 0을 제거한 수로 바꿉니다.(0000은 0으로 처리가 잘 됩니다.)
그리고 정렬에도 이상이 없어보입니다...!
예시문제는 다 통과되는데, 3%에서 계속 오답이 됩니다...!
어디가 틀렸을까요?
답변 2
1
안녕하세요 어려워님 ㅎㅎ
string delete_zero(string num){
if(num[0] == num[num.length()-1])
return "0";
이부분이요.
0110 과 같은 경우 0으로 되지 않을까요?
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 너무어려워님.
2-I 문제에 관련하여 3%에서 계속 오답이 발생하는 상황에 대해 고민이 많으신 것 같군요. 귀하의 문제와 유사한 사례에서의 해결 방법에 대한 조언을 드리겠습니다.
주어진 문제는 문자열 내에서 숫자를 추출하고, 앞의 ‘0’을 제거한 후 정렬하는 알고리즘 문제입니다. 일반적으로 이 과정에서 약간의 실수들이 발생할 수 있으며, 특히 아래와 같은 부분들을 주의 깊게 확인해야겠습니다:
범위 처리: 입력 문자열의 길이가 상당히 길 수 있습니다. 각 숫자를 int로 변환하여 처리하면, 초과 범위로 인한 문제가 발생할 수 있습니다. 따라서, 숫자를 처리할 때는 문자열로 처리하거나 long long
타입을 고려해야 합니다.
0 처리 로직 검증: 모든 숫자에 대해 앞의 0을 정확히 제거했는지 확인하세요. ‘0000’ 같은 경우는 0으로 취급되나, ‘00010’을 ‘10’으로 변환하는 로직이 제대로 구현되어야 합니다.
유사한 문제 해결 사례를 참고하시면 이해에 도움이 될 것입니다. 다음 사례에서는 큰 숫자를 문자열로 처리하는 방식을 통해 범위 초과를 방지하고 있습니다:
이 링크에서는 숫자 변환 시 범위 문제로 발생할 수 있는 오류를 설명하고 문자열 기반 로직을 사용해 문제를 해결하는 방법에 대해 설명합니다.
디버깅: 디버그 로그를 추가하여 각 단계의 결과를 확인함으로써 예상치 못한 값이 처리되는 부분을 찾을 수 있습니다.
테스트 케이스 강화: 다양한 엣지 케이스들을 수동으로 추가하여 프로그램이 예상대로 작동하는지 확인하십시오. 특히 긴 문자열, 불균형한 0의 사용, 여러 자리 수 입력 등을 고려하세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그 부분을 생각치못했네요..!
빠른 답변주셔서 감사합니다!