얼렁뚱땅 스며드는 Data Science

Algorithm

[프로그래머스 알고리즘] 1강, 2강 : Intro & Linear Array

Jesip14 2021. 7. 12. 17:27

Q. 우리는 왜 알고리즘과 자료구조를 배울까?

해결하고자 하는 문제에 따라 최적의 해법이 다 다르다.

자료구조 / 알고리즘을 통해 빠르고 효율적인 답을 얻을 수 있다.


알고리즘

[사전적 정의] 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합

[프로그래밍] 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택

 

선형 배열 (Linear Arrays)

Python에서의 리스트는 다른 프로그래밍 언어들과는 달리 다양한 타입들의 원소를 가질 수 있다.

  • 상수 시간이 걸리는 연산: 리스트의 길이와 상관없이 시간이 걸린다. (리스트 길이와 상관없이 수행됨)
    • .pop( ) : 리스트 마지막 원소를 꺼내는 연산
    • .append( ) : 리스트 마지막에 괄호 안의 원소를 추가하는 연산
  • 선형 시간이 걸리는 연산 : 리스트의 길이가 길면 오래 걸린다. (리스트의 길이에 비례하는 시간)
    • .del( ) : 리스트의 특정 위치에 있는 원소를 삭제하는 연산
    • .insert( ) : 리스트의 특정 위치에 원소 추가하는 연산
  • 그 외 연산
    • .index( ) : 리스트의 원소 탐색하는 연산

 

1강 과제 : 리스트 합 구하기

def solution(x): 
    return x[0] + x[len(x) - 1]

 

2강 과제 : 정렬된 리스트에 원소 삽입

 

def solution(L, x):
    for idx, num in enumerate(L):
        if num>=x:
            L.insert(idx,x)
            break
        if L[-1] < x:
            L.append(x)
    return L

 

2강 과제 : 리스트에서 원소 찾아내기

 

def solution(L, x):
    answer = []
    if x in L:
        for i, y in enumerate(L):
            if(y == x): 
                answer.append(i)
    else:
        answer.append(-1)
    return answer