작성
·
30
·
수정됨
0
http://boj.kr/08916a4be30641928e5ee933aa6ccc62
해당 문제풀이에서 뭐가 잘못됬는지 잘 모르겠습니다.
테스트 코드는 잘 돌아가는데 어떤 부분에서 논리적오류가 발생했는지 알수있을까요
풀이 로직은 1과 2의 스코어가 같을때 이전에 이기고 있던 사람이 있다면
ret에 더해주기 이고
승부가 갈리는 시점만 시간을 기록해둔다 입니다/.
그래서 s1-s2==1이고 이전에 비기고 있던 상태 즉 winner==0이라면
해당 시점의 승자를 1로 세팅하고 시간을 기록하고요
s1==s2로 같이지고 이기고 있던 winner가 존재한다면 해당 시점의 시간을
정수로 저장하려합니다.
답변 2
0
안녕하세요 현우님 ㅎㅎ
if(m2>=m1){
tmp=(h1-h2-1)*100+(60+m1-m2);
}else
tmp=(h1-h2)*100+m1-m2;
이 부분 때문에 그렇습니다.
100을 곱하고 마지막에 나누기 + 모듈러 연산을 하면 100이상값이 왔을 때 부정확해집니다.
(예를 들어 경시시간 차이가 - 초가 120초 이상인 것이 오면)
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 김현우님.
제출하신 문제와 관련하여 발생할 수 있는 논리적 오류를 추적하는 데 있어, 일반적으로 영향을 미칠 수 있는 여러 가지 요소를 고려해야 합니다. 특히 문제의 입력 조건이나 제약 사항을 잘못 해석했거나 프로그램 내에서 특정 예외 조건들을 놓쳤을 가능성이 있습니다.
변수 초기화: 코드의 초반부에서 모든 변수가 올바르게 초기화되어 있는지 다시 확인해 보세요. 초기화되지 않은 변수는 예기치 않은 동작을 유발할 수 있습니다.
예외 케이스: 문제에서 제공되는 입력의 범위나 형식을 모두 체크해 보셨는지 확인하세요. 예를 들어, 입력의 범위가 예상보다 크거나 작을 경우 처리가 올바르지 않을 수 있습니다.
플래그 변수의 사용: 코드에서 check
와 같은 플래그 변수를 어떻게 사용하고 있는지 살펴보세요. 프로그램 흐름에 중대한 영향을 미칠 수 있는 플래그 변수가 적절히 설정되고 있는지 확인이 필요합니다.
비슷한 문제의 예가 있었던 다른 수강생의 질문도 참고가 될 수 있습니다. 아래의 링크를 통해 해결 방법에 대한 힌트를 얻으실 수 있습니다:
이 질문에서 공통적으로 논의된 문제를 통해 자신의 코드 논리를 재검토하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.