프로그래밍 101

백준_python 9375번 패션왕 신해빈(딕셔너리)

링크>https://www.acmicpc.net/problem/9375   123456789101112131415161718t = int(input()) for _ in range(t):    n = int(input())    clothes = dict()    for _ in range(n):        name, type = map(str, input().split())        if type in clothes.keys():            clothes[type].append(name)        else:            clothes[type] = [name]    cnt = 1     for k in clothes:        cnt *= len(clothes[k]) + 1..

정규표현식_python 단어만 남기고 비단어 문자 제거

🔷 예제 코드 123456789import re paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"] words = [word for word in re.sub(r'\W+', ' ', paragraph).lower().split() if word not in banned] print(words)    # ['bob', 'a', 'ball', 'the', 'ball', 'flew', 'far', 'after', 'it', 'was']cs  🔷 re.sub(r'\W+', ' ', paragraph)=> paragraph라는 문자열에서 연속된 모든 비단어 문자를 찾아 이를 단일 공백 문자 ' '로 대체   ..

백준_python 10942번 팰린드롬?(시간초과, DP)

https://www.acmicpc.net/problem/10942 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import sys input = sys.stdin.readline n = int(input()) list_n = list(map(int, input().split())) m = int(input()) dp_table = [[0] * (n+1) for _ in range(n+1)] for i in range(1,n..

백준_python 1003번 피보나치 함수(다이나믹프로그래밍)

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def fibonacci(n) : zeros = [1, 0, 1] ones = [0, 1, 1] if n >= 3: for i in range(2,n): zeros.append(zeros[i-1] + zeros[i]) ones.append(ones[i-1] + ones[i]) print(zeros[n], ones[n]) t = int(input()) for _ in range(t): n = int(input()) fibonacci(n)..

백준_python 2178번 미로 탐색(그래프, BFS)

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 from collections import deque n, m = map(int, input().split()) maze = [list(map(int, input())) for _ in range(n)] def bfs(graph, x, y): q = deque([(0, 0)]) # 상하좌우 이동 값 d..

백준_python 1463번 1로 만들기(BFS, DP)

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net sol 1) BFS(너비 우선 탐색) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from collections import deque n = int(input()) def bfs(x): visited = [False] * (n + 1) # n + 1 크기의 방문 체크 배열 생성 q = deque([(x, 0)]) # 큐에 초기 값과 연산 횟수 추가 visited[x] = True # 초기 값 방문 체크 w..

프로그래머스_python lv2. 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS))

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr sol 1) BFS(너비 우선 탐색) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from collections import deque def solution(numbers, target): answer = 0 q = deque() n = len(numbers) q.append([numbers[0], 0]) q.ap..

프로그래머스_python lv2. 다리를 지나는 트럭(스택, 큐 - deque)

https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from collections import deque def solution(bridge_length, weight, truck_weights): time = 0 current_weight = 0 on_bridge = deque([0]..

백준_python 1966번 프린터 큐(스택, 큐)

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t = int(input()) for _ in range(t): n, m = map(int, input().split()) file = list(map(int, input().split())) answer = 1 while file: if file[0] 0 else len(file) - 1 print(an..

정렬 알고리즘_셸 정렬, 퀵 정렬

셸 정렬 단순 삽입 정렬의 장점 + 단점 보완한 더 빠른 정렬 알고리즘 단순 삽입 정렬 장점 : 이미 정렬을 마쳤거나 끝나가는 상태에서 매우 빠른 속도 단점 : 삽입할 위치가 멀면 이동 횟수가 많아짐 정렬횟수는 증가하나, 전체적으로 원소의 이동 횟수가 줄어 효율적 서로 h 만큼 떨어진 원소를 꺼내 그룹으로 만들고 그룹별로 정렬 = h-정렬 ex) 4-정렬 -> 2-정렬 -> 1-정렬 순으로 실행 1 2 3 4 5 6 7 8 9 10 11 12 def shell_sort(a: MutableSequence) -> None: n = len(a) h = n // 2 while h > 0: for i in range(h, n): j = i - h tmp = a[i] while j >= 0 and a[j] > tm..