본문 바로가기

전체 글21

함수에서의 리스트 수정..? 어제 몇 시간을 아래 코드 가지고 씨름하고 있었다...;; 결국 함수에서의 인자 전달 과정에 대해 여러 번 다시 찾아보았고, 배운 것이 많았다 ㅠㅠ def foo(input : list) -> None: input = [0] bar = [1,2,3] foo(bar) print(bar) # [1,2,3] (왜 [0]이 아니지? 라고 생각하셨다면, 처음의 저와 같은 생각을 하신 겁니다..ㅎ) 결론부터 이야기하자면, 위의 함수는 리스트를 수정하는 것이 아니라 재할당하는 것이다. 즉, 리스트를 수정하는 경우와 재할당하는 것은 다르다. 그러니까, 아래의 코드는 우리가 생각하는 대로 동작한다. def foo(input : list) -> None: input[-1] = 0 bar = [1,2,3] foo(bar) .. 2021. 2. 7.
Group Anagrams (그룹 애너그램) Q. 문자열 배열을 받아 애너그램 단위로 그룹핑하라. (list[list] 형태) 애너그램이란? 일종의 말장난으로, 어떠한 단어의 문자를 재배열하여 다른 뜻을 가지는 다른 단어로 바꾸는 것을 말한다 ex) angel = angle / heart = earth 입력 : ['eat', 'tea', 'tan', 'nat', 'bat', 'eat'] 구현 전략 * idea : 각각의 단어를 정렬한 결과가 같으면 애너그램 관계에 있다! 1. key(단어를 정렬한 결과) - value(정렬 결과가 같은 단어들의 리스트) 를 가지는 dictionary를 생성한다. 2. list[list] 꼴로 변환하여 결과를 출력한다. import collections words = ['eat', 'tea', 'tan', 'nat'.. 2021. 1. 31.
Most Common Word (가장 많이 등장하는 단어 찾기) Q. 주어진 string에서, banned 리스트에 있는 단어들을 제외하고 가장 많이 등장하는 단어를 찾아라. (단 대소문자는 구분하지 않는다) banned = [a, the] / string = "Bob hit a ball, the hit BALL flew far after it was hit." 구현 과정 1. string에서 특수문자를 모두 제거하고, 소문자로 변환한다. 2. 변환된 string을 단어 단위로 preprocessed 리스트에 저장한다. 3. 해당 리스트에서 banned에 없는 단어에 대해 출현 횟수를 세어 가장 많이 등장한 단어를 찾는다 (Counter 객체 사용) 아래는 preprocessed 리스트를 초기화하는 과정까지의 코드이다. import re import collectio.. 2021. 1. 31.
Collections 모듈 - Counter 파이썬의 collections 모듈은 데이터를 다루기 위한 유용한 컨테이너 객체를 지원한다. 알고리즘 공부를 하면서 이 collections 모듈을 자주 사용하는 관계로, 정리해 보기로 했다. Collections 모듈에는 Counter, Defaultdict, Orderdict(요즘은 의미가 거의 없지만), deque, namedtuple 등 여러 가지 데이터타입을 지원하는데, 여기서는 가장 많이 쓰이는 타입 중 하나인 Counter에 대해 알아보고자 한다. 추후 나머지 데이터타입들에 대해서도 유용한 것은 정리해볼 예정이다 (근데 그러면 글 순서는 어떻게 해야되지...?) 1. 객체 초기화 class collections.Counter([iterable-or-mapping]) Counter 객체는 di.. 2021. 1. 31.
Type Hint (타입 힌트) 파이썬은 기본적으로 동적 타입의 언어이다. 즉 정수를 저장하는 변수인 number에 10을 저장할 때, number라는 변수가 정수 자료형인지를 명시해줄 필요가 없다. 이는 정적 타입 언어인 c, c++ 등과 대비되는 특징이며, 파이썬의 난이도를 쉽게 만드는 장점이 된다. 하지만 동적인 자료형은 때때로 독이 되기도 한다. 코드를 읽어볼 때 자료형을 바로바로 알 수 없으니 가독성이 떨어질 수도 있고, 코드를 유지보수 하는 데에도 애를 먹기 쉽다. 따라서 복잡한 코드를 작성하는 경우에는 자료형을 표기하는 편이 좋다. 또한 파이썬은 변수의 자료형을 표기하는 Type Hint 기능을 제공하고 있다. 더보기 정적 타입 변수의 자료형을 컴파일 시에 결정하며, 따라서 구현 시에 미리 변수형을 지정해 주어야 한다. C.. 2021. 1. 29.