분류 전체보기 645

BFS(너비 우선 탐색)

BFS(Breadth First Search, 너비 우선 탐색) 큐 활용 시작점의 인접한 정점들을 모두 차례로 방문한 후 방문했던 정점을 시작점으로 하여 다시 인접한 정점들을 차례로 방문 인접한 정점들을 탐색한 후, 차례로 너비 우선 탐색을 진행해야 하므로, 선입선출 형태의 자료구조인 큐 활용 인접 리스트로 구현했을 때 O(|V| + |E|), 인접 행렬로 구현했을 때 O(|V^2|)의 시간복잡도를 가진다. 인접 리스트는 각 정점마다 해당 정점에서 나가는 간선의 목록을 저장 인접 행렬은 2차원 배열을 이용해 그래프의 간선 정보를 저장 🌿 인접 리스트와 인접 행렬의 예시 🐋 BFS 코드 예시 from collections import deque def BFS(G, v) : # 그래프 G, 탐색 시작점 v ..

우선순위 큐

우선순위 큐 우선순위를 가진 항목들을 저장하는 큐 FIFO 순서가 아니라 우선순위가 높은 순서대로 먼저 나감 ex) 시뮬레이션 시스템, 네트워크 트래픽 제어, 운영체제의 태스크 스케줄링 구현 리스트를 이용한 우선순위 큐 1. 리스트를 이용하여 자료 저장 2. 원소를 삽입하는 과정에서 우선순위를 비교하여 적절한 위치에 삽입하는 구조 3. 가장 앞에 최고 우선순위의 원소가 위치 문제점 리스트를 사용하므로, 삽입이나 삭제 연산이 일어날 때 원소의 재배치가 발생 소요되는 시간이 많이 걸림 해결 PriorityQueue(maxsize)클래스 사용 힙 자료구조 사용 우선순위 큐 라이브러리 사용 기본 연산 삽입 : enQueue 우선순위에 맞게 삽입 삭제 : deQueue 가장 높은 우선순위부터 삭제 버퍼 : 데이터..

lombok 사용

lombok을 의존성에 추가하는 방법은 2가지다. 참고 👉 https://projectlombok.org/setup/gradle 1. plugin plugins { id "io.freefair.lombok" version "6.6.1" } 2. 컴파일 중에만 lombok을 추가하도록 compileOnly scope 사용 repositories { mavenCentral() } dependencies { compileOnly 'org.projectlombok:lombok:1.18.24' annotationProcessor 'org.projectlombok:lombok:1.18.24' testCompileOnly 'org.projectlombok:lombok:1.18.24' testAnnotationProc..

선형 큐

1차원 리스트를 이용한 큐 큐의 크기 = 리스트 크기 front 저장된 첫 번째 원소의 인덱스 rear 저장된 마지막 원소의 인덱스 초기 상태 : front = rear = -1 공백 상태 : front = rear 포화 상태 : rear = n-1 (n : 리스트 크기, n-1 : 리스트의 마지막 인덱스) ✨ 선형 큐의 구현 1. 초기 createQueue() 초기 공백큐 생성 크기가 n인 1차원 리스트 생성 front = rear = -1 2. 삽입 : enQueue(item) 마지막 원소 뒤에 새로운 원소를 삽입하기 위해 rear 값을 하나 증가시켜 새로운 원소를 삽입할 자리를 마련 그 인덱스에 해당하는 리스트원소 Q[rear]에 item을 저장 3. 삭제 deQueue() 가장 앞에 있는 원소를 ..

Queue

큐(Queue) : 1. 삽입, 삭제의 위치가 제한적인 자료구조 큐 뒤 : 삽입 / 큐 앞 : 삭제 2. 선입선출구조(FIFO : First In First Out) 큐에 삽입한 순서대로 원소가 저장 가장 먼저 삽입(First In)된 원소는 가장 먼저 삭제(First Out) 3. 큐의 예 : 서비스 대기 행렬 오버플로우(Overflow) : 큐가 꽉 참. 언더플로우(Underflow) : 큐가 비어 있음. 🔸 큐의 종류 1. 선형 큐 : 간단하고 기본적인 형태. 리스트 사용 2. 원형 큐 : 선형에서 발전된 형태. 리스트 사용 3. 연결 큐 : 연결 리스트 형식을 이용 4. 우선순위 큐 🔅 큐의 선입선출 구조 머리(Front) 저장된 원소 중 첫 번째 원소 꼬리(Rear) 저장된 원소 중 마지막 번째..

[파이썬] 4881. 배열 최소 합

swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. NxN 배열에 숫자가 들어있다. 한 줄에서 하나씩 N개의 숫자를 골라 합이 최소가 되도록 하려고 한다. 단, 세로로 같은 줄에서 두 개 이상의 숫자를 고를 수 없다. 조건에 맞게 숫자를 골랐을 때의 최소 합을 출력하는 프로그램을 만드시오. 예를 들어 다음과 같이 배열이 주어진다. 2 1 2 5 8 5 7 2 2 이경우 1, 5, 2를 고르면 합이 8로 최소가 된다. [입력] 첫 줄에 ..

coding test 2021.01.20

함수

:와 -> def func(파라미터명: 파리미터타입) -> 반환형타입 : 언팩 연산자를 사용하는 튜플 형식의 가변 매개변수 def calc_sum(*params) : total=0 for val in params : total +=val return total ret_val=calc_sum(1, 2, 3)# 6 가변형 매개변수는 가장 마지막 매개변수로 사용해야 에러x 키워드 언팩 연산자(**) 매개변수의 개수를 가변적으로 사용할 수 있음. 키워드 인자들을 전달해 매개변수를 딕셔너리 형식으로 처리 def use_keyword_arg_unpacking(**params) : for k in params.keys() : print("{0} : {1}".format(k, params[k])) use_keyword..

Languages/Python 2021.01.18

[파이썬] 4880. 토너먼트 카드게임

swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. 사다리 게임이 지겨워진 알고리즘 반 학생들이 새로운 게임을 만들었다. 가위바위보가 그려진 카드를 이용해 토너먼트로 한 명을 뽑는 것이다. 게임 룰은 다음과 같다. 1번부터 N번까지 N명의 학생이 N장의 카드를 나눠 갖는다. 전체를 두 개의 그룹으로 나누고, 그룹의 승자끼리 카드를 비교해서 이긴 사람이 최종 승자가 된다. 그룹의 승자는 그룹 내부를 다시 두 그룹으로 나눠 뽑는데, i번부..

coding test 2021.01.18

[파이썬] 4875. 미로

swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. NxN 크기의 미로에서 출발지에서 목적지에 도착하는 경로가 존재하는지 확인하는 프로그램을 작성하시오. 도착할 수 있으면 1, 아니면 0을 출력한다. 주어진 미로 밖으로는 나갈 수 없다. 다음은 5x5 미로의 예이다. 13101 10101 10101 10101 10021 마지막 줄의 2에서 출발해서 0인 통로를 따라 이동하면 맨 윗줄의 3에 도착할 수 있는지 확인하면 된다. [입력] 첫..

coding test 2021.01.15