암호의 세기를 구하는 문제이다.
해야할 일을 보자면
1. 암호의 입력을 받는다.
2. 암호의 세기를 각각 계산한다.
3. 세기가 가장 큰 암호를 출력한다.
언듯보면 간단해보이는 문제이다.
하지만 개인적으론 코드를 짤때 포기할뻔한 문제이기도 하다....
코드를 보면 입력을 받아서 간단한 방식으로 암호 세기를 구하는 코드이다.
문제에서 준 예제를 넣으니 잘 나온다.
정답.
느낀점:
1. 원래의 코드는 숫자를 먼저 구하는 것이 아니라 알파벳 소문자의 수를 구하고 전체 길이에서 소문자의 수를 빼 숫자의 수를 구하는 방식이었다. 이를 위해서 알파벳 소문자로 이루어진 배열을 하나 선언하고 암호를 구성하는 숫자 혹은 문자가 그 배열 안에 있는지(있다=그것은 소문자이다->문자 수 +1, 없다= 그것은 숫자이다->다음으로 넘어감)를 알아보는 식으로 코드를 짰다. 그런데 이렇게 하니 계속 시간초과가 났다. 입력을 input에서 sys.stdin.readline으로 해도, 세기 계산에 로그를 씌워도(계산값을 줄이기 위해) 계속 시간초과가 나서 포기하려다 조언을 받아 숫자를 먼저 구해보니 바로 정답이 떳다. 허탈했다...
2. 로그를 쓰는 것은 처음엔 생각도 하지 못했다. koogle 코드를 찾아보다가 발견한 것으로,
이 글에 나와있듯, 강도를 정확히 구할 필요가 없고, 비교만 하면 되기 때문에 log를 써도 되겠다는 생각이 들어서 쓰게 되었다.
3. 실행시간이 616ms로 꽤 긴데 (문제에서 준 시간제한은 1000ms) 이걸 더 줄일수 있는 방법이 있나 생각을 해봐야겠다.
'코테용 문제풀이 > 알고스팟' 카테고리의 다른 글
알고스팟 zeroone 문제 파이썬으로 풀기 (0) | 2019.07.16 |
---|---|
알고스팟 meeting 문제 파이썬으로 풀기 (0) | 2019.07.15 |
알고스팟 decode 문제 파이썬으로 풀기 (0) | 2019.07.03 |
알고스팟 asymtiling 문제 파이썬으로 풀기 (0) | 2019.06.24 |
알고스팟 maxsum 문제 파이썬으로 풀기 (0) | 2019.06.24 |