def get_prefix(strs):
if len(strs) == 0:
return ''
# 먼저 해당 없는 길이 0인 배열 제외
strs.sort()
# 정렬
shortest = strs[0]
# 기준점 잡기
prefix = ''
# return 할 완성작 잡기
for i in range(len(shortest)):
# Range index
if strs[len(strs)-1][i] == shortest[i]:
prefix += strs[len(strs)-1][i]
# 만일 값이 같다면 프레픽스에 하나씩 글자 추가
else:
break
# 없으면 브레이크 걸기
return prefix
print(get_prefix(['start', 'stair', 'step']))
어렵다. [][] 이 부분은 익숙치 않았다. 나중에 다시 풀어보기
너무 어렵게 생각 말기.
def maxSubArray(nums):
for i in range(1, len(nums)):
# 1부터 len(num)까지
if nums[i-1] > 0:
# 만일 0보다 큰 요소가 있다면
nums[i] += nums[i-1]
# 다음 요소와 더해준다.
return max(nums)
# 그 중 가장 큰 값
print(maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))
선택정렬
def selectionSort(nums):
for i in range(len(nums)-1):
min_index = i
for j in range(i+1, len(nums)):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
print(selectionSort([2,4,7,5]))
피보나치처럼 약간 공식같다. 잘 알아두자.
버블정렬 ; 선택정렬과 반대, nested for loop가 필요
def bubbleSort(arr):
for i in range(len(arr)-1, 0, -1):
for j in range(i):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
print(bubbleSort([2, 1, 4, 6, 8, 3]))
재귀함수(reverse 안 쓰고 재귀함수로 뒤집기)
def reverseString(str):
result = []
for i in range(len(str)):
result.append(str[len(str) - (i+1)])
result = ''.join(result)
return result
print(reverseString('hello'))