7개의 댓글이 있습니다.
-
-
JongMan -
첫 문제가 너무 어려웠나요..? ^^;; 일단 두 가지를 말씀드려야 할 것 같네요..
1. 만드신 알고리즘의 시간 복잡도는 O(n^2) 입니다... 100번 문제에서 n 은 최대 1만까지 들어오는데, 1만 제곱이면 시간 제한 안에 계산하기 버거운 양이죠.. ^^; 그래서, 좀 더 빠른 시간에 동작하는 알고리즘을 짜셔야 할 것 같고요. 지금 알고리즘은 입력 { 1, 2, 3 } { 6, 5, 4 } 들어오면 잘못된 답을 낼 것 같은데.. 맞나요? ^^;
2. 입력 하나 받고, 계산해서 하나 출력하고, 이런 식으로 하셔도 됩니다. 입력 다 받아서 저장하실 필요 없어요~~
15년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
미래인
안녕하세요
오늘 가입하고 이런사이트가 있었구나 하고 신기해서 바로 100번 문제부터 풀어본 대학2학년생입니다 ^^;;
근데 아무리 해도 시간초과가 되서요... ㅜㅜ
사이트 훓어보니 고수분들 전문 사이트 같은데 제가 이런질문 드려도 될지 모르겠어요.... ㅜㅜ
많이 배우고 싶어서 사이트 들어오게 됐는데 처음부터 고난이네요... ㅜㅜ
머가 문제인지 알수 있을까요...?
#include
using namespace std;
int operate(int num1 , int num2) {
int result;
if( (num1 > 0 && num2 > 0) || (num1 < 0 && num2 < 0) )
result = abs(abs(num1) - abs(num2));
else
result = abs(num1) + abs(num2);
return result;
}
int main() {
int numOfTestCases;
short* numOfMan;
cin >> numOfTestCases;
numOfMan = new short[numOfTestCases];
int** man = new int*[numOfTestCases];
int** woman = new int*[numOfTestCases];
for(int i = 0 ; i < numOfTestCases ; i++) {
cin >> numOfMan[i];
man[i] = new int[numOfMan[i]];
woman[i] = new int[numOfMan[i]];
for(int j = 0 ; j < numOfMan[i] ; j++) {
cin >> man[i][j];
}
for(int k = 0 ; k < numOfMan[i] ; k++) {
cin >> woman[i][k];
}
}
for(int l = 0 ; l < numOfTestCases ; l++) {
int result=0;
for(int x = 0 ; x < numOfMan[l] ; x++) {
for(int y = 0 ; y < numOfMan[l] ; y++) {
if(man[l][x] == woman[l][y]) {
man[l][x] = woman[l][y] = 0;
}
}
}
for(int m = 0 ; m < numOfMan[l] ; m++) {
result += operate(man[l][m] , woman[l][m]);
}
cout << result << endl;
}
for(int a = 0 ; a < numOfTestCases ; a++){
delete[] man[a];
delete[] woman[a];
}
delete man;
delete woman;
return 0;
}
15년 전