♟️ 알고리즘 117

[MySQL][Leet Code] 584. Find Customer Referee (Easy)

https://leetcode.com/problems/find-customer-referee/description/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 1SELECT nameFROM CustomerWHERE referee_id != 2 OR referee_id IS NULL 1. 간단한 SQL 문제이다.  Customer 테이블에서 referee_id가 2가 아닌 값을 찾아냄  2. 주의점은 referee_id에 NULL 값이 있는데, 이거 같은 경우 값이 아니기 때문에 같은 연산자로 못 찾음  3. 때문에 IS NULL 과 같은 방법으로 찾는다.  🗒️SQL 코드 풀이 2SELECT nameFROM CustomerWHERE COALESCE(r..

[Python][백준] 2170. 선 긋기/ 정렬,스위핑 (G5)

🔗링크 :  https://www.acmicpc.net/problem/2170🗒️파이썬 코드 풀이N = int(input())lst = []for _ in range(N): a,b = map(int,input().split()) lst.append([a,b])lst.sort()merged = []# 초기값 설정start, end = lst[0][0],lst[0][1]for i in range(1,N): a,b = lst[i][0],lst[i][1] if a   1.두 점의 위치를 lst에 전부 넣어주고 sort로 정렬 해준다.여기에서 sort를 사용해도 된다. ( 정렬 시간 복잡도는 N*LogN | 10^6 * Log10^6 = 약 10^7)2. 초기값을 정렬된 lst의 첫번째 ..

[Python][백준] 1700. 멀티탭 스케줄링 / 그리디 (G1)

🔗링크 :  https://www.acmicpc.net/problem/1700🗒️파이썬 코드 풀이N,K = map(int,input().split())lst = list(map(int,input().split()))cnt = 0multitab = set()for i in range(len(lst)): # 장치가 멀티탭에 꽂힌 경우 if lst[i] in multitab: continue # 멀티탭 자리가 남는 경우 if len(multitab)  1. 세가지의 조건으로 나눈다.device가 멀티탭에 꽂힌 경우멀티탭 자리가 남는 경우멀티탭 자리 부족으로 device 교체2.  "멀티탭 자리 부족으로 device 교체"  이 부분이 중요한데, 멀티탭의 값이 lst의 i+1 ~ N ..

[Python][백준] 2252. 줄 세우기 / 위상정렬, DAG (G3)

🔗링크 :  https://www.acmicpc.net/problem/2252✨ 위상정렬 풀이 방식위상 정렬은 DAG(Directed Acyclic Graph)의 조건을 만족하면서 모든 노드를 나열하는 정렬 방법이다. 여기에서 DAG라는 말이 좀 어렵게 느껴질 수 있지만, 쉽게 말해 비순환형 그래프로 반드시 사이클이 없어야 한다. (뭐 어렵게 생각할 필요없고, 아래 예시와 같이 비순환형 그래프를 DAG라 보면 된다.) 위상정렬 같은 경우 그래프의 구조와 노드의 연결 방식에 따라 여러개의 답이 나올 수 있다.  EX) 다음은 위상 정렬에 대한 간단한 예시이다.아래의 그래프를 위상정렬로 나열하면 되는 것이다.  풀이과정은 다음과 같다.그래프 및 진입 차수 계산진입 차수 0인 노드 큐에 추가큐에서 노드 꺼내..

[Python][백준] 1916. 최소비용 구하기/ 다익스트라, 최단 경로 (G5)

🔗링크 :  https://www.acmicpc.net/problem/1062🗒️파이썬 코드 풀이from heapq import heappop,heappushN = int(input())M = int(input())lst = [[] for _ in range(N+1)]for _ in range(M): start,end,cost = map(int,input().split()) lst[start].append((end,cost))departure, arrival = map(int,input().split())distance = [float('INF')] * (N+1)distance[departure] = 0queue = [(0,departure)]while queue : current_cost,cu..

[Python][백준] 1062. 가르침 / 브루트포스,비트마스킹,백트래킹 (G4)

🔗링크 :  https://www.acmicpc.net/problem/1062🗒️파이썬 코드 풀이from itertools import combinationsN,K = map(int,input().split())left_word = K-5 alphabet = set("antitaca")newAlphabet = set()words = []for _ in range(N): word = set(input()) words.append(word) newAlphabet.update(word-alphabet) if left_word   1. k개의 글자를 배우는데, "anta" , "tica" 의 단어까지 포함이다. 기본 "antic", 총 5글자는 알아야 함2. 기본 배워야 할 단어: alphbet , ..

[Python][백준] 13144. List of Unique Numbers / 투포인터 (G4)

🔗링크 :  https://www.acmicpc.net/problem/13144🗒️파이썬 코드 풀이import sysinput = sys.stdin.readlineN = int(input())lst = list(map(int,input().split()))number = set()rs = sp = 0 for ep in range(N): while lst[ep] in number: number.remove(lst[sp]) sp += 1 number.add(lst[ep]) rs = rs + ep - sp + 1print(rs)ex)1 2 3 1 2 1. 위와 같은 입력을 예시로 들어보자. 아마 대부분의 보통은 1 / 1,2 / 1,2,3 /  2 / 2,3 / ..

[Python][백준] 14891. 톱니바퀴 / 시뮬레이션,구현 (G5)

🔗링크 :  https://www.acmicpc.net/problem/14891🗒️파이썬 코드 풀이import sysfrom collections import dequeinput = sys.stdin.readline# 방향 로테이션def wheel_rotate(graph,i,dir): graph[i].rotate(dir) return # 방향 로테이션 스택에 넣어주기def stack_rotate(graph,n,dir): stack = [(n,dir)] rdir = -dir for i in range(n,0,-1): if graph[i][6] != graph[i-1][2]: stack.append([i-1,rdir]) ..