초보자 질문입니다...

  • 미래인
    미래인

    안녕하세요
    오늘 가입하고 이런사이트가 있었구나 하고 신기해서 바로 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년 전
7개의 댓글이 있습니다.
  • JongMan
    JongMan

    첫 문제가 너무 어려웠나요..? ^^;; 일단 두 가지를 말씀드려야 할 것 같네요..
    1. 만드신 알고리즘의 시간 복잡도는 O(n^2) 입니다... 100번 문제에서 n 은 최대 1만까지 들어오는데, 1만 제곱이면 시간 제한 안에 계산하기 버거운 양이죠.. ^^; 그래서, 좀 더 빠른 시간에 동작하는 알고리즘을 짜셔야 할 것 같고요. 지금 알고리즘은 입력 { 1, 2, 3 } { 6, 5, 4 } 들어오면 잘못된 답을 낼 것 같은데.. 맞나요? ^^;
    2. 입력 하나 받고, 계산해서 하나 출력하고, 이런 식으로 하셔도 됩니다. 입력 다 받아서 저장하실 필요 없어요~~


    15년 전 link
  • 미래인
    미래인

    감사합니다 다시 노력해 볼께요 ^^


    15년 전 link
  • 미래인
    미래인

    혹시....
    -3 -2 -1 1
    2 5 -4 -3
    이 입력되면 최소값이 '9' 가 나오는것이 맞나요...?


    15년 전 link
  • 미래인
    미래인

    오후 5시쯤 시작해서.... 지금 새벽2시.... ㅎㅎ
    머... 원래머... ㅋㅋ


    15년 전 link
  • JongMan
    JongMan

    (-3,-4)(-2,-3)
    (-1,2)
    (1,5) 
    순서대로 매칭되어야 합니다. 1+1+3+4=9 가 맞겠네요 :)


    15년 전 link
  • 미래인
    미래인

    우와... 도저히 모르겠네요;; 아직 한참 멀었나봐요 저는;; ㅎㅎ
    소스는 제게 도움이 되지 않을거 같구요.... 혹시 글로써 알고리즘 설명해주실수 있나요....?
    지금 아무것도 못하고 있습니다... 머릿속에서 떠나질 않네요... ㅜㅜ


    15년 전 link
  • Being
    Being

    그래서 에디토리얼이란 게 있지요 :) 


    15년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.