KOOGLE에서 RTE

  • revofpla
    revofpla

    KOOGLE을 python으로 구현중인데 RTE (nonzero return code) 가 뜨고있는데 원인을 알 수 없어 글 남깁니다.

    import sys;
    import math;

    def isNumber(s):
    try:
    float(s);
    return True;
    except ValueError:
    return False;

    def getscore(a,b):
    return math.pow(26, a)*math.pow(10,b);

    samplecount = int(sys.stdin.readline());

    for i in range(samplecount):
    testcount = int(sys.stdin.readline());
    maxscore=0;
    goodpwd="";

    for j in range(testcount):
        chaNum=0;
        intNum=0;
        curpwd = sys.stdin.readline().strip();
        for cha in curpwd:
            if not isNumber(cha):
                chaNum=chaNum+1;
            else:
                intNum=intNum+1;
        score = getscore(chaNum, intNum);
        if maxscore<score:
            maxscore=score;
            goodpwd=curpwd;
        elif maxscore==score:
            if goodpwd>curpwd:
                goodpwd=curpwd;
    print goodpwd

    우선, 위의 부분이 코드인데요. sys.std.readline()으로 각 줄을 읽어오도록 되어있으며, 명확하게 int인 부분은 int로 바로 캐스팅해서 for 문을 위해서 사용하고 있습니다.

    그리고 패스워드를 readline으로 받고 그 문자열의 특정자리의 문자가 알파벳인지 숫자인지를 확인하기 위해서 float으로 캐스팅을 해보고 되면 숫자, 안되면 알파벳이라고 try-catch로 강제로 exception을 발생시키고 핸들링하는 구조로 처리하였습니다. 해당 def의 리턴값은 boolean으로 되어 숫자면 True, 알파벳이면 False가 반환되고 이를 이용하여 각 패스워드에 알파벳 몇 개, 숫자 몇 개 인지를 각각 체크하고 이를 이용해서 각 패스워드의 점수를 math.pow(x,y)를 이용해서 계산하도록 처리했습니다.
    특별히 runtime에러가 날만한 부분도 없어보이고 Ideone에서 돌렸을때는 샘플 케이스 및 제가 만든 테스트케이스에서도 별 문제없이 동작했었는데 RTE가 떠서 영 찾을수가 없어 글 남깁니다.

    감사합니다.


    10년 전
1개의 댓글이 있습니다.
  • revofpla
    revofpla

    자문자답:
    그냥 최대자리가 1000이라는걸 100으로 잘못봐서 테스트케이스가 짧은 경우에서만 만들어져서 정상적이였는데 긴 경우에 대한 문제였군요... 긴 경우에 RTE가 발생하는거였네요....


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