본문 바로가기

부트캠프18

백준 1026번 : 보물 (Python) 출처 : https://www.acmicpc.net/problem/1026 n = int(input()) a = list(map(int, input().split())) b = list(map(int, input().split())) a.sort() b.sort(reverse=True) answer = 0 for i in range(n) : answer += a[i] * b[i] print(answer) 배열 $A$와 $B$에 속한 $n$개의 숫자들을 각각 $a_{1} \leq a_{2} \leq \cdots \leq a_{n}$, $b_{1} \leq b_{2} \leq \cdots \leq b_{n}$ 이라고 하자. 이때 문제에서 구하고자 하는 최솟값을 구하기 위해서는 가장 작은 $a_{1}$과 가장.. 2022. 10. 20.
프로그래머스 행렬의 덧셈 (Python) https://school.programmers.co.kr/learn/courses/30/lessons/12950 def solution(arr1, arr2) : answer = [] for i in range(len(arr1)) : answer_r = [] for j in range(len(arr1[i])) : answer_r.append(arr1[i][j] + arr2[i][j]) answer.append(answer_r) return answer numpy 라이브러리를 사용하면 간단하지만, 프로그래머스에서는 사용할 수 없다. 따라서 행과 열로 쪼개서 더해야 한다. 행 번호(i)가 같을 때 열 번호(j)가 같은 성분끼리 더해 answer_r 이라는 리스트를 만들고, answer_r을 합쳐 answer.. 2022. 10. 19.
프로그래머스 멀리 뛰기 (Python) https://school.programmers.co.kr/learn/courses/30/lessons/12914 def solution(n) : answer = [1, 1] for i in range(2, n+1) : answer.append(answer[-1] + answer[-2]) return answer[-1] % 1234567 피보나치 수열을 출력하는 문제이다. n칸을 뛰기 위해서는 (n - 1)칸을 뛴 후 1칸을 더 뛰거나, (n - 2)칸을 뛴 후 2칸을 더 뛰면 된다. 초기값을 넣은 answer라는 리스트를 만들고, n번째 값에 도달할 때까지 가장 끝의 두 값을 더해 append 함수로 추가하는 방식의 코드를 작성했다. 2022. 10. 19.
백준 1010번 : 다리 놓기 (Python) 출처 : https://www.acmicpc.net/problem/1010 t = int(input()) for i in range(t) : n, m = map(int, input().split()) n1 = 1 m1 = 1 for i in range(1, n+1) : n1 = n1 * i for j in range(m-n+1, m+1) : m1 = m1 * j print(int(m1/n1)) 복잡하게 생각할 필요 없이 오른쪽 m개의 사이트 중 n개의 다리를 선택하면 된다. 어떻게 선택되든 왼쪽과 오른쪽의 사이트는 제일 위에서부터 순서대로 다리가 놓인다. 파이썬에서는 조합을 구하는 함수가 따로 없기 때문에 분자에는 (m - n + 1) 부터 m까지 곱한 값을, 분모에는 1부터 n까지 곱한 값을 구해서 계.. 2022. 10. 19.