Week 3

Woo Hwukjun·2020년 12월 17일
0

Day1

두 개의 input에는 복소수(complex number)가 string 으로 주어집니다.
복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.
input으로 받은 두 수를 곱해서 반환해주세요.
반환하는 표현도 복소수 형태의 string 이어야 합니다.
복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산해주세요.
제곱 표현이 안 되어 i의 2제곱을 (i^2)라고 표현했습니다.

Input: "1+3i", "1+-2i" (1 + 3i) * (1 - 2i) = 1 - 2i + 3i -6(i^2) = 1 + i + 6,
Output: "7+1i"

def complex_number_multiply(a, b):
  firstArr = a[:-1].split('+') # +사인을두고 스플릿이된다.
  a1 = int(firstArr[0]) #첫번째 숫자입력
  a2 = int(firstArr[1])

  secondArr = b[:-1].split('+')
  b1 = int(secondArr[0])
  b2 = int(secondArr[1])

  return f'{a1 * b1 - a2 * b2}+{a1 * b2 + a2 * b1}i' 

Day 2

문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.
새로운 배열을 선언하면 안 됩니다.인자로 받은 배열을 수정해서 만들어주세요.
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

def reverse_string(s) :
  return s[::-1] #처음부터 끝까지 꺼꾸로 출력

Day 3

양수로 이루어진 m x n 그리드를 인자로 드립니다.
상단 왼쪽에서 시작하여, 하단 오른쪽까지 가는 길의 요소를 다 더했을 때,가장 작은 합을 찾아서 return 해주세요. 한 지점에서 우측이나 아래로만 이동할 수 있습니다.
Input:
[[1,3,1],
[1,5,1],
[4,2,1]]
Output: 7

def min_path_sum(grid):
  m = len(grid) #전체 리스트갯수
  n = len(grid[0]) #첫번째 칸 리스트안에 숫자갯수

  for i in range(1, n): #앞에 1은 부터 시작합니다.
    grid[0][i] += grid[0][i-1] #1을 빼서 0부터시작할수있게한다.
    # print(grid[0][i])
  for i in range(1, m): 
    grid[i][0] += grid[i-1][0] 각 리스트에 첫번째 번호를 출력한다.
    # print(grid[i][0])

  for i in range(1, m): 
    for j in range(1, n):
      grid[i][j] += min(grid[i-1][j], grid[i][j-1]) #작은순으로해준다
  return grid[-1][-1] #뒤에서 출력한다.

Day 4

주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요.
원래 있던 숫자의 순서는 바꾸지 말아주세요.
새로운 배열을 생성해서는 안 됩니다.
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

def move_zeroes(nums):
  last_0 = 0 #배열을 순서르 0부터 시작하기때문이다

  for i in range(len(nums)): 
    if nums[i] != 0: #배열안에 숫자가 0이 아니면
      temp = nums[i]  #0이 아닌숫자 temp에 저장
      nums[i] = nums[last_0] 
      nums[last_0] = temp #nums[last_0]에 temp 0이 아닌숫자저장
      
      last_0 = last_0 + 1 #그 다음배열을 위해 1을 더하기
  return nums

Day 5

재귀 알고리즘
재귀(recursion)란, 자신을 정의할 때 자기 자신을 호출하는 방법을 뜻합니다. 프로그래밍의 함수정의에서 많이 사용됩니다.
countdown 함수는 받은 인자를 출력합니다. 그런데 위의 함수를 실행하면 10에서 시작해서 무한으로 마이너스 값까지 내려갑니다.
그래서 재귀함수는 아래의 절차가 꼭 필요합니다. 언제 멈출것인가?
위를 고려해 0이 되면 더이상 재귀를 이어나가지 않도록 종료 조건을 추가하겠습니다.

def countdown(n):
  print(n)
  if (n == 0):
    return None
  countdown(n-1)
countdown(10);
def countdown(n):
  print(n)
  if (n == 0):
    return None  
  countdown(n-1)
countdown(10);

재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요.
팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다.
1! = 1
2! = 1 2
5! = 1 2 3 4 * 5

답:

def factorial(n):
  if (n == 0):
    return 1
    
  return n * factorial(n-1)
profile
미래 개발자

0개의 댓글