알고리즘이란?

guava·2021년 9월 1일
0

알고리즘의 정석

목록 보기
1/13
post-thumbnail

코드잇의 알고리즘의 정석 수업을 수강하고 정리한 글입니다.

1. 알고리즘이란?


  • 어떤 문제를 해결하기 위한 자세한 방법이다.
  • 문제를 해결하는것 뿐만 아니라 효율적으로 해결이 가능해야 좋은 알고리즘이다.
  • 컴퓨터 알고리즘은 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법이다.

예를들어[9, 4, 10, 3, 5, 8, 12, 1][1, 3, 4, 5, 8, 9, 10, 12]와 같이 정렬해야 하는 문제가 있다고 하자.

우리는 위와같은 문제를 풀 때 정확하고 효율적으로 숫자를 정렬하는 알고리즘을 찾아야 한다.

2. 알고리즘이 바꾸는 세상


훌륭한 알고리즘의 예

  • 네비게이션: 길을 정확하게 알려주고 빨리 알려주는 알고리즘
  • 영화: 단순하게 평점 순서가 아닌 데이터를 기반으로 개개인에 맞춰 영화를 골라주는 알고리즘

알고리즘의 중요성

  • 낮아진 소프트웨어 개발에 대한 진입장벽으로 인한 서비스의 차별성 필요
  • 어떤 알고리즘이냐에 따라 기술적인 완성도, 서비스의 성패를 가르기도 한다.

3. 알고리즘을 모르는 개발자?


  • 알고리즘적인 사고를 갖춘 유능한 개발자 사이에서 일하다 보면 알고리즘 지식없이는 소통이 힘들다.
    → BFS 알고리즘, O(n), "Divide and Conquer"등의 용어를 사용해본적 있는가?

  • 꼭 어려운 문제가 아니더라도 프로그램에는 알고리즘이 포함되어 있다.
    → 매년 성장하는 앱서비스의 트래픽을 감당하기위한 서버 효율성 개선

  • 좋은 회사는 코딩테스트를 본다. 실무가 부족해도 알고리즘적 사고력은 검증하기 때문.

알고리즘 문제풀이

알고리즘 문제를 풀어보자. 다음 문제가 어렵다면 파이썬 문법과 기초적인 컴퓨터적 사고를 공부하고 오기를 추천한다.

팔린드롬 문제

토마토기러기처럼 거꾸로 읽어도 똑같은 단어를 팔린드롬(palindrome)이라고 부릅니다. 문자열 word가 팔린드롬인지 확인하는 함수 is_palindrome를 쓰세요. is_palindromeword가 팔린드롬이면 True를, 팔린드롬이 아니면 False를 리턴합니다.

  • 반드시 for문을 사용하셔야 합니다.
  • appendinsert 메소드와 del 함수를 사용하면 안됩니다.
  • 자동 채점 과제이기 때문에, 문제의 조건에 정확히 따라주시기 바랍니다. 띄어쓰기도 일치해야 합니다.
def is_palindrome(word):
    # 코드를 입력하세요.

# 테스트
print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))
# 정답출력
True
False
True
True
False

나의 풀이

def is_palindrome(word):
    last_index = len(word)//2 # word의 길이를 이용해 last_index를 정의
    for left in range(last_index):
        right = len(word) - left - 1
        if word[left] != word[right]: # left, right 각각의 인덱스를 비교해서 팔린드룸 여부를 반환
            return False
    return True

# 테스트
print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

0개의 댓글