728x90
반응형

Python/Algorithm 6

[Python, Algorithm] 두 수의 합

출처: 파이썬 알고리즘 인터뷰 info > enumerate() > 인자의 index와 값을 튜플 형태로 전달 for i, n in enumerate(li): print(i, n) for tu in enumerate(li): print(tu) print: 1 a 2 b 3 r 4 1 5 d (0, 3) (1, 'a') (2, 'b') (3, 'r') (4, 1) (5, 'd') 방법 1) brute-force 방법 모든 조합 조회 ( O(n^2) ) def two_sum_bruteForce( nums : [int], target : int) -> [int]: for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] ..

Python/Algorithm 2020.10.02

[Python, Algorithm] sorted() sort

출처: 파이썬 알고리즘 인터뷰 Python에서는 기본적으로 Timsort를 사용한다. Timsort는'실제 데이터는 대부분 이미 정렬되어 있을 것이다'라는 가정하고 실제 데이터에서 고성능을 낼 수 있도록 설계된 알고리즘이다. sorted() 사용 sorted() 함수는 입력받는 String or List를 List로 반환한다. str01 = 'aieosdkdslerb' print(sorted(str01)) print: ['a', 'b', 'd', 'd', 'e', 'e', 'i', 'k', 'l', 'o', 'r', 's', 's'] key 지정 sorted() 함수는 정렬을 위한 key 옵션이 있다. ex1) len 지정 key로 len을 지정하면 길이가 짧은 순으로 정렬된다. list01 = ['aa..

Python/Algorithm 2020.09.30

[Python, algorithm] 애너그램(Anagram)

출처: 파이썬 알고리즘 인터뷰 문제: 애너그램, 문자의 위치만 바뀌었을 때 같은 단어를 만들 수 있음. 1. dictionary에 존재하지 않는 키를 삽입하면 error가 발생하기 때문에 defluat를 생성한다. anagrams = collections.defaultdict(list) 2. 각 단어를 sorted()를 통해 정렬 후 다시 join하여 key 생성 print( sorted('abc')) print( sorted('bca')) print( ''.join(sorted('abc'))) print( ''.join(sorted('bca'))) 즉, 아래와 같이 'abc'와 'bca'는 같은 key를 생성한다. print: ['a', 'b', 'c'] ['a', 'b', 'c'] abc abc 3...

Python/Algorithm 2020.09.30

[python, algorithm] 가장 흔한 단어 찾기

출처: 파이썬 알고리즘 인터뷰 문제: 금지된 단어를 제외한 가장 많이 나온 단어를 찾기 여기서도 정규식을 활용하여 문제 풀이가 가능하다. str01 = 'aaa bbb dfsdfe ds#@fds ff!@!ffd df 234$# #@$ @$##@@' print(str01) print(re.sub(r'[^\w]', ' ', str01)) 정규식에서 \w는 단어 문자를 뜻하며 위와 같이 하면 문자가 아니면 전부 공백으로 처리할 수 있다. print 결과 아래와 같이 여러 문자들은 없어진다. aaa bbb dfsdfe ds#@fds ff!@!ffd df 234$# #@$ @$##@@ aaa bbb dfsdfe ds fds ff ffd df 234 이외에도 소대문자 통일 및 금지된 단어 제외를 하는 방법을 순서대..

Python/Algorithm 2020.09.29

[python] 팰린드롬 풀기

출처: 파이썬 알고리즘 인터뷰 정규식 및 슬라이스 사용 파이썬에서 정규식을 사용하려면 Regex 모듈을 import 해야 한다. import re 먼저, 모든 문자를 소문자로 변경한다. s = s.lower() 정규식을 이용해서 문자와 숫자를 제외한 값은 ''(빈공간)로 swap 한다. s = re.sub('[^a-z0-9]', '', s) 슬라이싱을 이용해서 문자열을 뒤집고 동일한지 비교해서 비교값을 return 한다. return s == s[::-1] 완성코드... import re def Palindrome(s : str) -> bool : s = s.lower() s = re.sub('[^a-z0-9]', '', s) return s == s[::-1]

Python/Algorithm 2020.09.21
728x90
반응형