반응형 파이썬65 [백준] 색종이 만들기 2630 (파이썬) 코드 # 색종이 만들기 # 쿼드 트리 문제 # 처음 리스트를 쪼개서 작은 리스트를 만드려고 했는데 이방식은 어리석은 방식이었다. 전체에서 범위만 제한해서 원하는 부분에 접근할 수 있다. import sys n = int(sys.stdin.readline().rstrip()) graph = [] for _ in range(n): graph.append(list(map(int,sys.stdin.readline().rstrip().split()))) # 잘라진 하얀색 색종이의 개수와, 파란색 색종이의 개수를 출력한다. w_cnt = 0 b_cnt = 0 # 색종이의 칠해져있는 여부를 검사한다. 1이라면 temp_cnt 를 만들어서 파란색 으로 칠해진 개수를 검사한다. # 만약 칠해져있는 것이 없다면 그것은 하.. 2021. 3. 15. [백준] [정렬] 통계학 2108 (파이썬) 개념 2020.11.24 - [Algorithm & Data structure] - [알고리즘] 선택정렬, 삽입정렬, 퀵정렬, 계수정렬 정리 [알고리즘] 선택정렬, 삽입정렬, 퀵정렬, 계수정렬 정리 정렬 선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨앞에 있는 데이터와 바꾸는 것을 반복한다 시간 복잡도는 O(n^2) 삽입 정렬 처리되지 않은 데이터를 하나씩 골라 적합 seongbindb.tistory.com 코드 정렬 시킨 이후에 문제를 풀어야한다. 최빈 값 구현이 까다롭다. # 통계학 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초256 MB4349810336847926.622% # 문제 # 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 .. 2021. 3. 14. [백준] [우선탐색] DFS와 BFS 1260 (파이썬) 개념 2021.03.07 - [Algorithm & Data structure] - [알고리즘] DFS와 BFS (깊이 우선탐색과 너비 우선탐색) [알고리즘] DFS와 BFS (깊이 우선탐색과 너비 우선탐색) DFS (깊이 우선탐색) 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 스택 자료구조( or 재귀함수)를 이용한다 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 스택의 최상단 노드에 seongbindb.tistory.com 스케치 코드 import sys from collections import deque def bfs(graph,start, visited_bfs): q = deque([start]) # 1 visited_bfs[start] = True while q: v = q.po.. 2021. 3. 14. [백준] [스택] 괄호 9012 (파이썬) 스케치 코드 # 괄호 import sys n = int(sys.stdin.readline().rstrip()) def checkVps(s): q = [] for x in s: if not q: # q가 비어있다. if x == ')': return 'NO' else: q.append(x) else: if x == '(': q.append(x) else: q.pop() if not q: return 'YES' else: return 'NO' for _ in range(n): print(checkVps(sys.stdin.readline().rstrip())) 2021. 3. 14. [백준] [스택] 제로 10773 (파이썬) (시간 초과 방지 코드) 시간 초과가 안되게 주의 해야한다. 2021.03.14 - [Programming/Python] - [파이썬] 코딩테스트 시간 초과시 해결 방법 sys.stdin.readline().rstrip() 코드 # 제로 import sys input = sys.stdin.readline k = int(input()) st = [] for _ in range(k): num = int(input()) if num == 0: st.pop() else: st.append(num) print(sum(st)) 2021. 3. 14. [파이썬] 코딩테스트 시간 초과시 해결 방법 sys.stdin.readline().rstrip() 코드 구현을 제대로 한 것 같은데 시간 초과로 통화 못하는 경우가 존재한다. 방법 1 input() 입력값을 빠르게 받을 수 있는 함수로 변경한다. 같은 코드이나 시간이 3초이상 차이나는 것을 확인 할 수 있다. import sys input_data = sys.stdin.readline().rstrip() # 기존 인풋 방식 input_data = input() 방법 2 코드를 python3에서 pypy로 제출한다. 단 시간은 단축하기 위해서 내부적으로 메모리를 많이 잡아먹기 때문에 메모리 초과에 주의해야 한다. 2021. 3. 14. [백준] [조합] 다리놓기 1010 (파이썬) 스케치 코드 다리가 교차한다는 건 순서를 고려하겠다는 순열이라고 생각하면된다 문제에서는 다리가 교차되면 안된다 하였으니 조합식으로 풀면 된다. itertools 라이브러를 활용해서 풀어 보고 싶었으나 단순 개수를 구하는 문제이므로 시간 초과가 났다. 팩토리얼 함수, 조합 함수를 만들어서 코드를 구현하였다. # 다리 놓기 (조합을 구해야하는데 시간이 0.5초) # 1 itertools 라이브러리 이용 시간 초과실패 # from itertools import combinations T = int(input()) def factorial(n): result = 1 for i in range(1, n+1): result *= i return result def combinations(a,b): result = .. 2021. 3. 14. [백준] 최소공배수 1934 (파이썬) 코드 유클리드 호제법을 사용하여 쉽게 구할 수 있다. 2021.03.14 - [Algorithm & Data structure] - [알고리즘] 유클리드 호제법 (최대공약수, 최소공배수) [알고리즘] 유클리드 호제법 (최대공약수, 최소공배수) 유클리드 호제법 유클리드 호제로 최대 공약수 구하기 두 자연수 A,B에 대하여 (A>B) A를 B로 나눈 나머지를 R이라고 한다. 이때 A와 B의 최대공약수는 B와 R의 최대 공약수와 같다 최소공배수 = 두 seongbindb.tistory.com # 최소 공배수 # a > b 를 만족해야 한다. def gcd(a,b): if a % b == 0: return b else: gcd(b, a % b) t = int(input()) for _ in range(t): x.. 2021. 3. 14. [백준] 최대공약수와 최소공배수 2609 (파이썬) 코드 유클리드 호제법으로 최대공약수를 구하면 최소공배수는 쉽게 구할 수 있다. 2021.03.14 - [Algorithm & Data structure] - [알고리즘] 유클리드 호제법 (최대공약수, 최소공배수) [알고리즘] 유클리드 호제법 (최대공약수, 최소공배수) 유클리드 호제법 유클리드 호제로 최대 공약수 구하기 두 자연수 A,B에 대하여 (A>B) A를 B로 나눈 나머지를 R이라고 한다. 이때 A와 B의 최대공약수는 B와 R의 최대 공약수와 같다 최소공배수 = 두 seongbindb.tistory.com # 유클리드 호제로 최대 공약수 구하기 # 유클리드 호제법 # 두 자연수 A,B에 대하여 (A>B) A를 B로 나눈 나머지를 R이라고 한다. # 이때 A와 B의 최대공약수는 B와 R의 최대 공약수.. 2021. 3. 14. [백준] 약수 1037 (파이썬) 스케치 코드 n = int(input()) arr = list(map(int,input().split())) arr.sort() # 약수가 무작위로 주어질 수 있기 때문에 sort가 필요하다 if len(arr) == 1: print(arr[0] ** 2) else: print(arr[0] * arr[-1]) 2021. 3. 14. [백준] [그리디] 동전 0 11047 (파이썬) 코드 # 각각의 동전들이 Ai 는 Ai-1의 배수 이기 때문에 그리디가 적용이 가능하다. n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) coins.sort(reverse=True) count = 0 for coin in coins: if coin 2021. 3. 14. [백준] [DP] 정수 삼각형 1932 (파이썬) 스케치 코드 # 정수 삼각형 n = int(input()) arr = [] # 입력 받은 데이터를 저장할 배열 for _ in range(n): data = list(map(int,input().split())) arr.append(data) # dp 테이블 초기화 (할필요 없이 입력받은 테이블을 dp테이블로 생각한다.) # dp = [ [0]*(i+1) for i in range(n) ] # dp[i][j] = i 번째 층에서 j인덱스의 수를 선택한 경우의 합 # dp[0][0] = arr[0][0] for i in range(1, n): for j in range(0, i+1): # 1층이면 index가 0,1 필요 if j == 0: arr[i][j] += arr[i-1][j] elif j == i.. 2021. 3. 14. [백준] [DP] RGB 거리 1149 (파이썬) 스케치 문제 접근은 하였으나 코드로 구현하는 것이 어려웠다 코드 # rgb거리 구하기 혼자 해결하지 못함 n = int(input()) # n이 2다 arr = [] for _ in range(n): arr.append(list(map(int,input().split()))) # (26, 10, 5) # 모든 집을 칠하는 최솟값을 구할 테이블 dp = [[1001]*3 for i in range(n)] #n 행 3열 테이블 for i in range(n): if i == 0: # 첫번 째 집이다 dp[i][0] = arr[i][0] # r 의 비용 dp[i][1] = arr[i][1] # g 의 비용 dp[i][2] = arr[i][2] # b 의 비용 else: dp[i][0] = arr[i][0] +.. 2021. 3. 14. [백준] 베르트랑 공준 4948 (파이썬) 코드 에라토스테네스의 체를 이용하면 간단하게 해결 가능하다. import math while True: n = int(input()) if n == 0: break count = 0 check = [True]* (2 * n + 1) # 모든 수가 소수 라고 가정 for i in range(2, int(math.sqrt(2*n) + 1)): if check[i]: j = 2 while i * j 2021. 3. 12. [백준] 카드2 2164 (파이썬) 코드 큐 자료구조를 이해하면 쉽게 풀 수 있는 문제 # 카드2 from collections import deque n = int(input()) q = deque() for i in range(n): q.append(i+1) while len(q) > 1: if (len(q) == 2): q.popleft() break q.popleft() # 제일 위에 있는 카드를 바닥에 버린다 q.append(q.popleft()) # 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. print(int(q.pop())) # 마지막에 있는 카드를 뽑는다. 2021. 3. 12. 이전 1 2 3 4 5 다음 반응형