자료구조 8

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

나동빈님의 '이것이 코딩테스트다.'를 참고하여 필요한 부분만 따로 정리하였습니다. 복수의 특정 값 삭제하기 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

백준 - 1300 K번째 수 [이분탐색]

4. 1300 K번째 수 4.1. 문제유형 Binary Search 4.2. 자료구조 left (int): 각 행의 최소값 인덱스 == 1 right (int): 각 행의 최대값 인덱스 == n mid (int): (left+right)//2 == 중간값으로 탐색해 나갈 값 4.3. 해결과정 핵심 아이디어는 행별로 mid값보다 작은 값의 개수를 세는 것이다. 각 행의 값은 i의 배수이며 작은 값들의 개수는 최대 n, 최소 mid // i이다. left

알고리즘 2021.08.09

프로그래머스 - 기능 개발 (스택,큐)

🔸 문제접근방식 progresses, speeds를 큐에 넣는다. progresses의 0번째 값이 100이상이면 꺼낸다. speeds도 progress 꺼낼 때 0번째부터 함께 꺼낸다. 1일마다 speeds만큼 progresses를 더한다. progresses 원소를 모두 꺼낼 때까지 2-3을 반복한다. 💧 Source Code from collections import deque def solution(progresses, speeds): ''' https://programmers.co.kr/learn/courses/30/lessons/42586 Notes: 1. progresses를 큐에 넣고 100이상이면 꺼낸다. 2. 1일마다 speeds만큼 progresses를 더한다. 3. 하루마다 1,2번..

알고리즘 2021.06.25

프로그래머스 - 프린터(스택,큐)

🔸 문제접근방식 priorities를 위치를 저장하는 값과 함께 큐에 넣는다. 더 큰 값이 있다면 0번째 값을 맨 뒤로 보낸다. 더 큰 값이 없다면 해당 값을 출력하고 answer를 1증가시킨다. 해당 위치의 값이 location이라면 answer를 반환한다. 💧 Source Code from collections import deque def solution(priorities, location): '''https://programmers.co.kr/learn/courses/30/lessons/42587 Notes: 1. priorities의 0번째보다 더 큰 값이 있는지 확인한다. 2. 더 큰 값이 있다면 0번째값을 맨 뒤로 보낸다. 3. 더 큰 값이 없다면 해당 값을 출력한다. Args: prior..

알고리즘 2021.06.24

백준 9012 괄호 문제풀이

📌문제설명 📌문제접근방식 핵심은 Valid한 PS임을 검증하는 것이다. 그래야 VPS와 VPS를 결합해도 VPS가 나오기 때문이다. 문자열 중 '(' 와 ')'를 스택을 이용해 검증했다. (가 나오면 스택에 넣고, )를 만나면 (를 꺼냈다. 단, 다음과 같은 경우 NO를 출력한다. 1. 스택에 (가 없는데 )를 만났다. 2. 검증이 끝난 후 스택에 (가 남아있다. 위 과정이 끝난 후 문제가 없으면 YES를 출력한다. 즉, '(' 와 ')' 의 개수가 같아야 하며 '('가 오기 전에 ')'가 오면 안된다. 📌문제풀이 import sys n = int(sys.stdin.readline().rstrip()) exlist = [sys.stdin.readline().rstrip() for x in range(n)..

알고리즘 2021.03.25

백준 11866 요세푸스 문제풀이

📌문제설명 📌문제접근방식 문제를 보자마자 들었던 생각은 원형 큐 자료구조를 이용해야겠다였다. 이유는 원을 계속해서 돌면서 k번째 사람들 제외해나가기 때문이었다. 하지만 원형큐로 구현할 경우 인덱스를 계속해서 바꿔주어야했다. 따라서 큐를 순회하며 방문한 값을 맨 뒤로 이동시켜주도록 구현했다. 📌문제풀이 소스코드 import sys from collections import deque n, target = map(int, sys.stdin.readline().rstrip().split()) data = deque() for i in range(1, n+1): data.append(i) def solution(target, data): result = [] i = 1 while data: if i==targe..

알고리즘 2021.03.23

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

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 를 계산..