문자열 인덱싱을 이용하여 가장 긴 팰린드롬을 찾아나갔다.문제풀이 def longest_palindrom(s): maxi = 0 for Rpt in range(0,len(s)): for rpt in range(1,len(s)+1-Rpt): normal = s[Rpt:Rpt+rpt] reverse = normal[::-1] if normal == reverse and rpt > maxi: maxi = rpt return maxi # 아래는 테스트로 출력해 보기 위한 코드입니다. print(longest_palindrom("토마토맛토마토")) print(longest_palindrom("baaab"))
예전에 비슷한 문제를 풀었을 때는 일일히 계산했다.이번에는 편한 방법이 없을까 찾아보았더니 입력받은 날짜를 요일로 반환해주는 모듈이 있길래 사용해보았다.문제풀이 import datetime def getDayName(a,b): day = ['MON','TUE','WED','THU','FRI','SAT','SUN'] return day[datetime.date(2016, a, b).weekday()] #아래 코드는 테스트를 위한 출력 코드입니다. print(getDayName(5,24))
이것보다 더 나은 코드가 있을지 생각해보았는데 아직 공부가 부족해 더 이상 생각나지 않는다. 문제풀이 def collatz(num): cnt = 0 answer = num while cnt < 500: if answer % 2 == 1: answer = answer * 3 + 1 cnt += 1 if answer == 1: return cnt else: answer //= 2 cnt += 1 if answer == 1: return cnt return -1 # 아래는 테스트로 출력해 보기 위한 코드입니다. print(collatz(6))
먼저 lower()을 이용해 모두 소문자로 바꾸고 split()을 이용해 단어별로 자르고,문자열 변수에 capitalize() 함수를 이용해 저장한다.문제풀이 def Jaden_Case(s): string = "" lst = s.lower().split() for rpt in range(0,len(lst)): string = string + lst[rpt].capitalize() + " " return string[0:len(string)-1] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(Jaden_Case("3people unFollowed me for the last week"))
'(' 일때는 카운트를 1 올리고 ')' 일때는 카운트를 1 내리면서카운트가 음수값이면 반복문을 종료하고 False를 반환한다.반복문이 종료했을때는 '('의 갯수와 ')'의 갯수가 같을때 True를 반환한다.문제풀이 def is_pair(s): cnt = 0 pair = [(i) for i in s if i in ('(',')')] for rpt in range(0, len(pair)): if pair[rpt] in '(': cnt += 1 elif pair[rpt] in ')': cnt -= 1 if cnt < 0: return False return pair.count('(') == pair.count(')') # 아래는 테스트로 출력해 보기 위한 코드입니다. print( is_pair("(hello..
나는 리스트에 저장한 다음 reverse() 함수를 이용하는 방법을 사용했지만reversed()함수를 이용해 한줄로 줄인것도 있다.문제풀이 def digit_reverse(n): lst = list(map(int, str(n))) lst.reverse() return lst # 아래는 테스트로 출력해 보기 위한 코드입니다. print("결과 : {}".format(digit_reverse(12345))); 다른 사람의 풀이 def digit_reverse(n): return list(map(int, reversed(str(n)))) # 아래는 테스트로 출력해 보기 위한 코드입니다. print("결과 : {}".format(digit_reverse(12345)));