[1강] 안녕, 자료구조 & 알고리즘!

황인용·2020년 7월 6일
1
post-thumbnail

Intro

문자열(str) : "This is a string."

리스트(list) : [5, 9, 2, 7]

사전(dict) : {'a' : 6, 'bc' : 4}

순서상(tuple)

집합(set)

......

...

.

Python에서 이미 제공하는 데이터 타입으로 다 해결할 수 있을 것 같지만,

→ "자료구조"(data Structures)라는 것을 왜 알아야하는 걸까?

Example max.py

import time

n = int(input("Number of elements: "))
haystack = [k for k in range(n)]

print("Searching for maximum value...")

ts = time.time()
maximum = max(haystack)
elapsed = time.time() - ts

print("Maximum element = $d, Elapsed time = %.2f" %(maximum, elapsed)

→ 안돌아감...=_=

  • 리스트 내에 요소들을 다 돌려보지 않고는 maximum값을 찾을 수 없다
  • 요소 갯수에 비례해서 maximum값을 구하는 속도가 걸린다

결론

⇒ 좀 더 빠른 방법으로 요소를 알아보는 방법이 있을까?

⇒ 알고리즘(algorithm) 이 나옴


알고리즘(Algorithm)

  • 사전적 정의

    : 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합

  • 프로그래밍 정의

    : 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택

Example

  • 최대 100개의 수를 일일이 비교하고 찾아야 한다

  • 정렬된 요소라고 한다면,
    찾고자 하는 수의 순서를 미리 파악해서 찾을 수 있음

결론

  • 해결하고자 하는 문제에 따라(응용 종류와 범위에 따라) 최적의 해법은 서로 다르다
  • 이 선택은 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야 함

[실습] 리스트 원소 합

문제

어서와! 자료구조와 알고리즘은 처음이지? - 1강 실습: 리스트 원소 두 개의 합 구하기

문제 설명

입력으로 주어지는 리스트 x 의 첫 원소와 마지막 원소의 합을 리턴하는 함수 solution() 을 완성하세요.


나의 풀이

solution.py

def solution(x):
    answer = 0
    answer = int(x[0]) + int(x[-1])
    return answer

실행결과

정확성  테스트
테스트 1 〉	통과 (0.03ms, 10.7MB)
테스트 2 〉	통과 (0.04ms, 10.6MB)
테스트 3 〉	통과 (0.04ms, 10.6MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
profile
dev_pang의 pang.log

0개의 댓글