Algorithm 67

220921_[백준]_16967번 : 배열 복원하기_python

https://www.acmicpc.net/problem/16967 16967번: 배열 복원하기 크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐 www.acmicpc.net 뇌절하고 0 들어간 부분만 골라서 풀어보려고 했다...테스트 케이스는 돌아감.. 더보기 h,w,x,y = list(map(int,input().split())) b_array = [ 0*(w+y) for _ in range(h+x)] for i in range(h+x): b_array[i] = list(map(int,input().split())) a_arr..

Algorithm/Beakjoon 2022.09.21

220919_[백준]_13335번 : 트럭_python

https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net Queue 이용 # n : 다리를 건너는 트럭의 수, w : 다리의 길이, L : 다리의 최대하중 n, w, l = map(int, input().split()) truck_list = list(map(int, input().split())) queue = [0] * w # 다리 cnt = 0 while queue: cnt += 1 queue.pop..

Algorithm/Beakjoon 2022.09.19

220916_[백준]_1292번 : 쉽게 푸는 문제_python

https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 범위 구현하다가 어차피 a, b의 범위가 1000이니까... len(arr) = 1036 46으로 그냥 전부 만들어버림 a, b = map(int,input().split()) arr = [0] for i in range(46): for j in range(i): arr.append(i) print(sum(arr[a:b+1]))

Algorithm/Beakjoon 2022.09.16

220916_[백준]_1547번 : 공_python

https://www.acmicpc.net/problem/1547 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net 공이 떨어지는 경우는 고려를 안했는데 이왜통과? 나중에 다시... graph = [0, True, False, False] #print(graph) m = int(input()) for i in range(m): x, y = map(int,input().split()) graph[x], graph[y] = graph[y], graph[x] #print(graph) print(graph.inde..

Algorithm/Beakjoon 2022.09.16

[알고리즘 도감] 그래프 탐색

CHAPTER 4 그래프 탐색이란, 특정 정점에서 출발해 간선을 통해 이동하며 대상 정점을 찾는 것 BFS (Breadth First Search, 너비 우선 탐색) 시작점부터 가까운 순으로 너비를 넓혀가며 탐색하는 방식으로 목표가 시작점에 가까이 있으면 탐색이 빨리 종료됨 FIFO 구조로 관리하므로 Queue 데이터 구조를 이용할 수 있음 from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): queue = deque([start]) # 큐 구현을 위해 deque 라이브러리 사용 visited[start] = True # 현재 노드 방문 처리 while queue: # 큐가 빌 때까지 반복 v = queue.popleft()..

220901_[백준]_10844번 : 쉬운 계단 수_python

https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 잘 읽자 국어공부 다시하자 ''' n=2 일 때, dp[2] = [10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98] 0 => dp[길이:i][자리수:j] = dp[i - 1][1] = [10] = 1 1~8 => dp[길이:i][자리수:j] = dp[i - 1][j - 1] + dp[i - 1][j + 1] = [[10, 12], [21, 23], [32, 34], [43, 45], [54, 56], [65, 67], [76, 78],..

Algorithm/Beakjoon 2022.09.01

[프로그래머스]_Level 1_같은 숫자는 싫어_파이썬

2021.09.11 def solution(arr): return [num for i, num in enumerate(arr) if arr[i] != arr[i-1] or i == 0] 빈 list answer의 마지막 값[-1:]과 arr의 값[i]을 순서대로 비교하면서 중복되지 않는 값을 answer에 넣는다. arr = [1,1,3,3,0,1,1] answer = [] for i in arr: if answer[-1:] != [i]: answer.append(i) print(answer) # [1, 3, 0, 1] 위의 식을 한 줄로 적으면 아래와 같이 작성할 수 있는데, 한 줄로 적은 list내부에 자기 자신을 적으면 정상적으로 작동하지 않는다. answer = [i for i in arr if ..

[프로그래머스]_Level 1_나누어 떨어지는 숫자 배열_파이썬

2021.09.10 def solution(arr, divisor): return [i for i in sorted(arr) if i % divisor == 0] or [-1] 우선 divisor로 나누어 떨어지는 arr의 요소만 list로 만든다. arr = [2, 36, 1, 3] divisor = 1 arr_divide = [i for i in sorted(arr) if i % divisor == 0] print(arr_divide) # [1, 2, 3, 36] 이때, 빈 list는 bool 자료형으로 나타냈을 때 False이다. print(bool([])) # False 따라서 아래와 같이 코드를 작성했다. def solution(arr, divisor): return [i for i in sor..

[프로그래머스]_Level 1_문자열 내 마음대로 정렬하기_파이썬

2021.09.10 def solution(strings, n): return sorted(sorted(strings), key = lambda x : x[n]) 백준 1181번 문제에서 사용했던 lambda함수를 썼다. lambda 익명함수, 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한줄로 간결하게 만들 때 사용한다. # lambda 인자(words의 인자) : 표현식((글자수, 글자)) # key = 정렬을 목적으로 하는 함수를 값으로 넣음 words = ["sun", "bed", "car"] words.sort(key = lambda x : x[-1]) print(words) # ['bed', 'sun', 'car']​ def solution(strings, n..