반응형
풀이
def isPalindrome(s, start, end):
diff = int((end - start + 1) / 2 - 1)
for i in range(diff + 1):
c1 = s[start + i]
c2 = s[end - i];
if c1 != c2:
return False
return True
def solution(s):
for answer in range(len(s),0,-1):
start = 0
end = 0 + answer - 1
while end < len(s):
if isPalindrome(s, start, end):
return answer;
start += 1
end += 1
return 1
실행 결과
정확성 테스트
테스트 1 〉 | 통과 (0.05ms, 10.8MB) |
테스트 2 〉 | 통과 (0.05ms, 10.7MB) |
테스트 3 〉 | 통과 (2.83ms, 10.8MB) |
테스트 4 〉 | 통과 (2.51ms, 10.8MB) |
테스트 5 〉 | 통과 (2.12ms, 10.8MB) |
테스트 6 〉 | 통과 (2.84ms, 10.7MB) |
테스트 7 〉 | 통과 (2.67ms, 10.7MB) |
테스트 8 〉 | 통과 (2.71ms, 10.8MB) |
테스트 9 〉 | 통과 (0.05ms, 10.7MB) |
테스트 10 〉 | 통과 (0.05ms, 10.8MB) |
테스트 11 〉 | 통과 (0.05ms, 10.8MB) |
테스트 12 〉 | 통과 (0.04ms, 10.8MB) |
테스트 13 〉 | 통과 (1.88ms, 10.7MB) |
테스트 14 〉 | 통과 (7.95ms, 10.8MB) |
테스트 15 〉 | 통과 (6.13ms, 10.7MB) |
테스트 16 〉 | 통과 (7.42ms, 10.8MB) |
테스트 17 〉 | 통과 (0.04ms, 10.8MB) |
테스트 18 〉 | 통과 (0.04ms, 10.7MB) |
테스트 19 〉 | 통과 (2.08ms, 10.8MB) |
테스트 20 〉 | 통과 (1.29ms, 10.8MB) |
테스트 21 〉 | 통과 (1.49ms, 10.8MB) |
효율성 테스트
테스트 1 〉 | 통과 (2396.26ms, 10.7MB) |
테스트 2 〉 | 통과 (0.58ms, 10.8MB) |
채점 결과
정확성: 69.3
효율성: 30.7
합계: 100.0 / 100.0
총평
먼저 팰린드롬인지 체크하는 함수를 만들어줍니다. 해당 함수는 문자열과 시작, 끝 위치를 파라미터로 받습니다 .그 다음, 끝에서부터 하나씩 체크를 하고, 만약 같은 경우에는 참을 반환합니다. 해당 함수를 만든 후, 모든 경우를 체크할 수 있도록 구현합니다. 우선 따라서 2중 반복문을 활용하였습니다. 그리고 가장 큰 단위부터 체크를 합니다. 가장 큰 단위가 팰린드롬인 경우, 해당 값을 바로 리턴을 하여, 불필요한 연산을 줄이도록 해야 합니다.
반응형
'SW > 알고리즘' 카테고리의 다른 글
파이썬 : 프로그래머스 : 자연수 뒤집어 배열로 만들기 : 풀이 (0) | 2019.09.25 |
---|---|
파이썬 : 프로그래머스 : 자릿수 더하기 : 풀이 (0) | 2019.09.24 |
파이썬 : 프로그래머스 : 타일 장식물 : 풀이 (0) | 2019.09.22 |
파이썬 : 프로그래머스 : 2 x n 타일링 : 풀이 (0) | 2019.09.21 |
파이썬 : 프로그래머스 : 콜라츠 추측 : 풀이 (0) | 2019.09.20 |