딕셔너리 6

파이썬 코딩테스트 참고자료 총 정리

나동빈님의 '이것이 코딩테스트다.'를 참고하여 필요한 부분만 따로 정리하였습니다. 복수의 특정 값 삭제하기 1. Python에서 리스트 삭제 시 복잡도는 O(N)이다. 2. 삭제 후 리스트 원소 위치를 조정하기 때문이다. 3. 따라서 여러 개 값은 삭제한다면, 복잡도는 O(N*logN)이다. 리스트 컴프리헨션을 활용해 O(N)으로 모든 특정값을 삭제할 수 있다. a=[1,2,3,4,5,5,5] remove_set={3,5} result = [i for i in a if i not in remove_set] print(result) 튜플 자료형 튜플 자료형의 특징과 시간복잡도 1. 튜플은 그래프 알고리즘 구현 시 자주 사용된다. 2. 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘 3. 다..

알고리즘 2021.11.01

프로그래머스 해시 - 완주하지 못한 선수

🔸 문제 접근 방식 ❗ 풀이 성공, 시간 초과 participant, completion을 Queue에 넣는다. completion을 꺼내 participant에 있으면 participant에서 제거한다. completion 요소가 없어질때까지 반복하고 남아있는 participant를 반환한다. → 이 문제의 경우 답을 구할 수는 있지만, 효율성 문제가 있었다. 시간복잡도가 O(N^2)일 경우 통과할 수 없다. ⭕ 시간 초과 해결 best_solution1, 2로 풀이 시 효율성 문제를 통과할 수 있었다. best_solution1의 경우, 정렬 후 최대 $10^5$번 비교를 수행하기 때문에 O(N)만 수행하면 된다. best_solution2의 경우 해시를 사용한 풀이방식으로 시간 단축에 효과적이었다...

알고리즘 2021.06.27

백준 10816 카드넘버2 문제풀이

📌문제설명 📌문제접근방식 1차시도 3단계에 걸쳐 문제를 해결하려고 했다. 하지만 결과적으로 문제를 복잡하게 만들었다. 1. 입력받은 값을 정렬한다. 2. (입력받은 값, 개수)를 저장한 리스트를 생성한다. 3. 2번의 리스트에서 입력받은 값을 기준으로 이진탐색을 수행하고, 개수를 반환한다. 첫 시도는 이진 탐색을 사용했다. 이유는 숫자 카드 개수가 50만이었고, 숫자 카드의 범위가 -천만~+천만이었기 때문이다. 따라서 최악의 경우 50만 x 7log10을 계산하면 된다고 생각했다. 하지만 시간초과가 발생했다. 따라서 해쉬로 구현해야겠다는 생각이 들었다. 소스코드 import sys n = int(sys.stdin.readline().rstrip()) cards = list(map(int, sys.stdi..

알고리즘 2021.03.21

딕셔너리와 zip함수 이해하기

📌딕셔너리 dict()함수 혹은 중괄호('{}')를 이용해 딕셔너리를 생성할 수 있다. 딕셔너리란 key와 value로 이루어진 자료형이다. dict1 = dict(a=1, b=2, c=3) dict2 = dict([('a',1),('b',2),('c',3)]) dict3 = {'a':1, 'b':2, 'c':3} print(dict1) print(dict2) print(dict3) # {'a':1, 'b':2, 'c':3} 📌zip() zip()함수를 이용해서도 딕셔너리를 만들 수 있다. dict1 = dict(zip(['a','b','c'], [1,2,3])) print(dict1) zip의 1,2번째 모두 길이가 같은 Iterable한 객체를 받는다. 그리고 각각의 요소를 차례로 짝지어주는 역할을 ..

변경 불가능한 자료형 주의하기

변경 가능한 객체와 불가능한 객체 📌Immutable 변경 불가능한 객체는 무엇이 있을까? 파이썬에서는 대표적으로 문자열, 튜플이 있다. str1 = 'Rainy day' str1 = 'Sunny day' str1에 저장한 문자열을 바꾸었다. 하지만 여기서 문자열을 수정한 것은 아니다. 서로 다른 객체로 바꿔치기 한 것이다. 문자열 객체는 총 두 번 생성되었기 때문이다. 'Rainy day'와 'Sunny day' 즉, immutable한 객체는 문자열이 변경되지 않고 새롭게 생성된다. 튜플도 마찬가지이다. 튜플은 값을 변경하려고 시도하면 에러가 발생한다. 📌Mutable Mutable 객체는 변경 가능한 객체이다. 대표적으로 리스트, 딕셔너리가 있다. list1 = [1,2,3,4,5] list1[-1..

파이썬 - 입/출력, 자료구조 빠르게 정리하기

1. 파이썬 기초 문법 1.1. 입력받고, 출력하기 파이썬에서는 간단하게 input()함수로 입력을 받을 수 있습니다. 출력은 print() 함수를 이용하면 쉽게 사용할 수 있습니다. 사용자로부터 input() 함수를 이용해 입력을 받겠습니다. input()은 구분 문자가 없이 한 줄을 읽어옵니다. input().split()으로 사용하면 공백을 기준으로 입력을 받을 수 있습니다. var = input().split() print(var) input().split(';')이라고 입력하면 ';' 문자를 기준으로 입력을 받습니다. var = input().split(';') print(var) 1.2. 문자열 덧셈, 곱셈 파이썬의 장점 중 하나는 문자열 처리가 간편하다는 것입니다. 2 + 3 = 5 를 계산..