Code Kata # 3

minch·2021년 8월 21일
0

Python

목록 보기
13/13
post-thumbnail

문제 1

Selection Sort(선택정렬)

정렬을 해야하는 배열은 [7,5,4,2] 입니다.

첫 번째 loop에서는 index 0부터 3까지 확인하며 가장 작은 수를 찾습니다.
2 이므로 index 0의 7과 교체합니다. -> [2,5,4,7]

두 번째는 index 1부터 3까지 확인하며 가장 작은 수를 찾습니다.
4이므로 index 1의 5와 교체합니다 -> [2,4,5,7]

세 번째는 index 2부터 3까지.. 이런식으로 가장 작은 수를 선택해서 순서대로 교체하는 것을 선택정렬이라고 합니다.

Solution

def selectionSort(nums): 
    for i in range(len(nums)):
      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

문제 2

Bubble Sort(버블정렬)

아래와 같은 정렬되지 않은 수가 있을 때, index 0 <-> 1 부터 교환하기 시작합니다.
인접한 두 수를 비교하여 더 큰 것을 우측으로 이동시킵니다.
6 5 3 2 8
-> 5 6 3 2 8

그 다음은 index 1 <-> 2
5 6 3 2 8
-> 5 3 6 2 8

그 다음은 index 2 <-> 3
5 3 6 2 8
-> 5 3 2 6 8

그 다음은 index 3 <-> 4
5 3 2 6 8
-> 5 3 2 6 8
이렇게 제일 마지막 두 수 까지 비교하면, 제일 큰 수가 제일 마지막 index에 위치하는 것을 알 수 있습니다.

다시 처음부터 시작합니다.
5 3 2 6 8
-> 3 5 2 6 8

3 5 2 6 8
-> 3 2 5 6 8

3 2 5 6 8
-> 3 2 5 6 8
이번 교환에는 index 2까지 비교하고 멈추면 됩니다.
마지막 index는 이미 제일 큰 수가 정렬된 상태이기 때문입니다.
이런식으로 계속 비교하고 교체하면 됩니다.!

Solution

def bubbleSort(arr):
  for j in range(1, len(arr)):
    for i in range(len(arr)-j):
      if arr[i] > arr[i+1]:
        arr[i+1],arr[i] = arr[i],arr[i+1]
  return arr

문제 3

str 이라는 'string'을 넘겨주면 글자순서를 바꿔서 return합니다.
reverse 메서드 사용은 금지!

input: 'hello'
output: 'olleh'

Hint

함수의 return에 string을 붙여서 사용합니다.

def getName(name):
  return name

print(getName('김')+'님')

Solution

def reverseString(str):
    if len(str) == 1:
      return str
    return str[-1] + reverseString(str[:-1])

마지막 글자를 반환하고 해당 문자열의 끝 index 전까지 반환하여,
문자열 길이가 1이 되면 해당 문자열을 반환하고 끝

0개의 댓글