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