프로그래밍/Python 85

백준_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..

백준_python 2108번 통계학(시간초과, collections.Counter 모듈)

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 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 28 29 import sys from collections import Counter # input()으로 입력 받으면 시간초과 발생 input = sys.stdin.readline n = int(input()) nums = [int(input()) for _ in range(n)]..

백준_python 1929번 소수 구하기(시간 초과, 에라토스테네스의 체)

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net sol1) m부터 n 사이의 숫자들이 약수인지 여부를 특정 숫자의 제곱근까지만 확인하여 판별 1 2 3 4 5 6 7 8 9 10 11 m, n = map(int, input().split()) for i in range(m, n+1): if i == 1: continue # i의 제곱근까지만 검사 for j in range(2, int(i ** 0.5) + 1): if i % j == 0: break else: print(i)..

백준_python 4949번 균형잡힌 세상(출력 초과)

https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net sol1) stack 배열에 열린 괄호는 추가, 닫힌 괄호는 열린 괄호 있으면 pop으로 제거 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 while True: stack = [] line = input() if line == '.': # 종료조건 break for i in line: i..