본문 바로가기

python

[Algorithm] 프로그래머스 전화번호 목록(해시) 문제 해당 문제를 풀 때 단순히 각 리스트 원소가 다른 리스트 원소의 앞 부분에 위치하는지, 그 원소로 시작하는 지를 따지려면 반복문을 2번 써야 하는 것. 풀이 문제 해결 아이디어는, "어떤 번호가 다른 번호의 접두어라면, 이 둘을 정렬했을 때 앞 뒤에 위치"하게 된다는 것이다. 즉, ["1235", "123", "12345", "012"] 라는 리스트를 정렬하게 되면 문자열 리스트는 대문자에서 소문자 순서로, 알파벳 순서로 정렬되므로, ["1012", "123", "12348", "1235"] 가 된다. 1. 따라서, i 번째 원소를 i+1번째 원소와 비교하며, 2-1. i + 1번째 원소의 [앞에서부터 ~ i번째 원소의 길이 만큼]이 i번째 원소와 같은지를 확인한다. 2-2. 여기서, i번째 원소가.. 더보기
[Algorithm] 프로그래머스 완주하지 못한 선수(해시) 문제 해당 문제는 해시 알고리즘으로 분류된 문제이며, 겉으로 봤을 땐 단순히 participant 내에 있는 원소 중 completion 에 존재하지 않는 원소가 있다면, 즉 참가자 이름에는 있지만 완주자 리스트에는 없는 이름을 리턴하면 되는 문제이다. 처음 풀이 단순히 문제를 보자마자 리스트 원소 존재 유무에 따라서 다음과 같이 코드를 작성하고 채점을 했더니, 효율성 부분에서 시간초과가 떴다. def solution(participant, completion): answer = '' for i in participant: if i in completion: completion.remove(i) else: answer = i return answer 다른 풀이 1 - 정렬 후 비교 - 리스트 내의 모든 .. 더보기
[Python] instance method / class method / static method https://www.daleseo.com/python-class-methods-vs-static-methods/ 메서드에서 헷갈리는 부분을 정리하기 위해 이 분의 글을 참고하였다! [파이썬] 정적(static) 메서드와 클래스(class) 메서드 Engineering Blog by Dale Seo www.daleseo.com 인스턴스 메서드(instance method) 일반적으로, 클래스 내에서 데코레이터(decorator)없이 메서드를 선언하게 되는 경우. 첫 번째 매개변수로 클래스의 인스턴스, self가 넘어오고, self를 통해 인스턴스 메서드가 인스턴스 속성(attribute)에 접근하거나 다른 인스턴스 메서드를 호출할 수 있다. 또, self를 통해 클래스 속성에 접근하거나 클래스 메서드를 .. 더보기
[Python] 헷갈리는 문법 정리2 - 람다(lambda) 함수(map(), filter(), reduce()) lambda 인자: 표현식 'lambda'는 런타임에 생성해 사용 가능한 익명 함수. 'lambda'는 쓰고 버리는 일시적인 함수로 일반적인 함수와 같이 정의해두고 쓰는 것이 아닌, 필요한 곳에서 즉시 사용하고 버릴 수 있다. f = lambda x: 2*x print(f(10)) g = lambda x, y: x + y print(g(5, 5)) 20 10 def func(n): return lambda x: x+n f = func(2) g = func(4) print(f(10)) # func(2)(10) print(g(20)) 12 24 map() map()은 두 개의 인수를 가지는 함수로, map(function, iterable, ...) 의 구조. 첫 번째 인자 function: 함수, 두 번째.. 더보기
[Python] 헷갈리는 문법 정리1 - enumerate() & zip() enumerate() enumerate() 함수는 인자의 값을 추출 할 때 인덱스를 함께 추출하는 기법. 인덱스 번호와 리스트 원소를 튜플 형태로 반환 fruit = ['apple', 'banana', 'strawberry', 'orange'] for i in enumerate(fruit): print(i) (0, 'apple') (1, 'banana') (2, 'strawberry') (3, 'orange') fruit = ['apple', 'banana', 'strawberry', 'orange'] for i, j in enumerate(fruit): print('index : {} , value : {}'.format(i,j)) index : 0 , value : apple index : 1 , v.. 더보기