작성
·
106
0
https://www.acmicpc.net/source/share/bc46fa452bbf42209281c4b2e3220c39
이 코드가 솔루션에서는 잘 돌아가는 데,백준에서는 시간초과라고 뜹니다 뭐가 문제인지 알 수 있을까요??
답변 1
1
안녕하세요 혁준님 ㅎㅎ
일단은 scanf와 cin은 되도록 같이 사용하시면 안됩니다.
두개를 같이 사용할 경우 입출력싱크를 맞추느라 -> 시간발생 -> 시간초과 발생할 수도 있습니다.
또한,
교안내의 입출력싱크 부분 참고부탁드립니다.
그리고... scanf를 cin으로 변경했더라도 이 코드는 문제가 있습니다. 바로 N의 범위인데요. 문제 최대 범위에 맞춰서 배열의 범위를 수정해야 합니다. (수정안할경우 런타임에러 발생합니다.)
#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
//재료의 고유번호를 담을 배열
int MtArrary[15000];
//입력받을 재료의 개수
int N;
//갑옷을 만드는 데 필요한 수
int Result;
//갑옷을 만들수 있는 수
int ArmourCnt;
//입력받을 재료의 고유 번호
int a;
int main()
{
cin >> N;
cin >> Result;
if (N <= 0 || Result == 0)
return 0;
for (int i = 0; i < N; i++)
{
cin >> a;
if (a < 0)
return 0;
MtArrary[i] = a;
}
for (int First = 0; First < N; First++)
{
for (int Second = First+1; Second < N; Second++)
{
if (Second == N+1)
break;
if (MtArrary[First] + MtArrary[Second] == Result)
ArmourCnt++;
}
}
cout << ArmourCnt;
return 0;
}
그리고 코드리뷰를 드리면요 ㅎㅎ
if (a < 0)
return 0;
입력값이 음수로 주어지는 경우는 없습니다.
또한 주어졌을 때 바로 끝내라는 문제 지문도 없습니다.
이런 불필요한 코드는 지워주셔야 해요 ㅎㅎ
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.