본문 바로가기
알고리즘

알고리즘

by 픠버 2022. 11. 10.

오늘은 알고리즘에 대해서 배웠다 . 사실 알고리즘이라는 단어가 많이 생소하기도 했고 말이 어려워 보여서 접근하기 어려운 영역 같았고 실제로도 너무 어려웠다 ...... 일단 기본적인 알고리즘의 정이는 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다라는 정의를 가지고 있다.

또한 어떤 문제가 있을때, 그것을 해결하기 위한 여러 동작들의 모임입니다.

 

예를 들어 엄마가 계란과 돼지고기를 사오라고 하셨다면 여러 방법이 떠오를 수 있습니다.

  1. 집앞 롯데슈퍼에서 계란과 돼지고기를 사온다.
  2. 시장 골목에 있는 노점상의 계란과 정육점의 돼지고기를 사오고 남은 돈으로 아이스크림을 사먹는다.
  3. 시골에 계시는 할머니집에 내려가 농사 일을 하루동안 도와주고 일삯으로 계란과 고기를 받는다.

이 방법들 중 어떤게 가장 좋은 방법 일까요? 시간 돈 ?  일단 알고리즘은 제일 효율적인 방법을 구현하는? 여러 자료구조와 방법들을 익혀두어 좋은 프로그램을 만드는,    좋은 개발자가 되기 위해선 없어서는 안되는 집합?이다.

 

오늘은 시간/ 공간 복잡도 , 알고리즘 구현력 기르기에 대해서 배웠고 기본적인? 알고리즘의 개념과 좋은 알고리즘이 무엇이고, 알고리즘을 구현하기 위해 필요한 기본적인 코딩을 배웠다

연습 문제를 풀면서 최댓값 찾기 문제가 있었는데 배열 내 가장 큰 수를 반환하는 문제여서 배웠던 내용이랑 유사하여 실전에서 사용을 했는데 다른 방법으로 문제를 풀이 해주셨다.

[3, 5, 6, 1, 2, 4]  <<<< 예를들어 , 이 숫자에서 가장 큰 수를 반화하는 문제였는데 첫 번째 방법에서 이중 for 문을 사용하여 당황했다.

for 문을 두번 돌려 변수와 변수끼리 만나고 가장 큰 수에 있어서 멈추었고,

def find_max_num(array):
    for num in array:
        for compare_num in array:
            if num < compare_num:
                break
        else:
            return num


print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))

 

두 번째 방법에서는 내가 아는 방법과 비슷하게 풀이 하였다.

def find_max_num(array):
    max_num = array[0]
    for num in array:
        if num > max_num:
            max_num = num
    return max_num


print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))

 

알고리즘에 대해 너무 어려워 진도를 많이 빼진 못했지만 이중 for문에 대해서 한번 더 배웠고 개발자가 되는 길은 너무 어렵다는걸 한번 더 느꼈다.......