inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

18. 층간 소음

채점기에서 틀렸다고 나오는데 이유를 모르겠습니다.

148

Lim sumin

작성한 질문수 15

0

해당 코드에서

	if(cnt == 0) cout << -1;

이부분을 뺏을때는 채점기에서 만점이 나오는데

아래 코드로 돌리면 40점이 나옵니다.

 

#include <bits/stdc++.h>

using namespace std;

int n, m, a, cnt = 0, _max = 0;

int main(){
	cin >> n >> m;
	for(int i = 1; i<= n; i++){
		cin >> a;
		if(a > m){
			cnt++;
			max = max(max, cnt);
		}
		else{
			cnt = 0;
		}
	}
	if(cnt == 0) cout << -1;
	else cout << _max;
	return 0;

c++ 코딩-테스트

답변 2

0

김태원

안녕하세요^^

앞에서 경보음이 울렸어도 측정치 수열의 뒤 부분 숫자가 M보다 작으면 cnt = 0이 될 수 있습니다.

10 60

42 67 41 2 1 18 63 65 60 19

위 입력의 경우 경보음이 울리지만 마지막 숫자 19을 탐색할 때 cnt = 0이 됩니다.

아래와 같이 바꾸면 100점 나올겁니다.

#include <bits/stdc++.h>

using namespace std;

int n, m, a, cnt = 0, _max = 0;

int main(){
	cin >> n >> m;
	for(int i = 1; i<= n; i++){
		cin >> a;
		if(a > m){
			cnt++;
			_max = max(_max, cnt);
		}
		else{
			cnt = 0;
		}
	}
	if(_max == 0) cout << -1;
	else cout << _max;
	return 0;
}

채점기에는 -1를 답으로 하는 케이스가 없으므로

5 3

1 2 1 2 1

를 입력해보세요. -1이 나올겁니다.

 

 

 

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Lim sumin님.

작성해주신 코드에서 채점기에서 만점이 나오지 않는 이유는 아마도 프로그램이 예상치 못한 반례를 제대로 처리하지 못하기 때문일 가능성이 높습니다.

비슷한 문제를 다룬 다른 질문 및 답변을 찾아보았습니다. 아래 링크에서 해당 문제의 다양한 문제점을 설명하고 해결하고 있습니다:

주요 포인트 요약:
1. 변수명 충돌: _max 대신 max를 사용하셨는데, 이는 C++의 표준 라이브러리에서 제공되는 max 함수와 이름이 겹쳐서 예기치 않은 동작을 유발할 수 있습니다. max 대신 _max나 다른 변수명을 사용하세요.
2. cnt 초기화 문제: 조건을 만족한 뒤 연속된 요소가 없을 시 _max를 제대로 갱신하지 못하는 경우가 발생할 수 있습니다.
3. 디버깅 팁: 주어진 입력을 통해 디버깅하는 것이 중요합니다.

아래 참고 코드를 보시면 수정된 부분을 확인할 수 있습니다:

#include <iostream>

using namespace std;

int n, m, a, cnt = 0, _max = 0;

int main(){
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        cin >> a;
        if(a > m){
            cnt++;
            _max = max(_max, cnt);
        }
        else{
            cnt = 0;
        }
    }
    if(_max == 0) cout << -1;
    else cout << _max;
    return 0;
}

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

87번 채점 프로그램에 오류가 있는 것 같습니다.

0

87

2

그리디 파트

0

114

2

안녕하세요. 선생님(54번 코드 관련 문의)

0

141

2

테스트 파일 exit_coe_1, time_limit_exceeded 질문

0

142

1

C언어로 코드를 짜면 채점 시에 한 문제 빼고 시간 초과가 발생하는데 해결하는 방법이 있을까요?

0

171

1

19번 질문있습니다

0

121

1

6번 관련 채점오류입니다

0

87

2

22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?

0

165

2

dev C++ 콘솔창 바로 닫힘

0

245

1

최신화하기

0

170

1

채점이 안되요...

1

260

1

안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.

0

113

1

45번 공주구하기 문제를 list를 이용해서 이렇게 풀어도 될까요?

0

155

1

39번 두 배열 합치기 문제 채점 오류인가 코드 오류인가

0

154

0

해당 강의에서 C언어로만 진행하는 강의 문의 건

0

143

2

87번 문제 섬나라 아일랜드 질문

0

128

1

16번 문제에서 직접 답을 대입하면 정답이 나오는데 채점에서 wrong answer가 나옵니다.

0

148

1

40번 교집합 문제

0

166

1

43번 뮤직비디오 문제 테스트케이스 4번을 만족 못합니다.

0

168

1

41. 연속된 자연수의 합 문제 질문있습니다.

0

164

1

질문있습니다.

0

191

2

시간초과가 나요

0

172

1

43번 문제 3 ~ 5번에 문제가 있는것 같습니다.

0

247

1

43번 채점결과

0

413

2