GitHub

https://github.com/Choidongjun0830

백준 64

Baekjoon Online Judge 2875번. 그리디

문제 링크 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 적어도 여학생이 2명, 남학생이 1명이 있어야 팀 1개가 만들어진다. 그래서 여학생이 2명 이상, 남학생이 1명 이상이고, 인턴십에 간 학생들보다 3명이 많아야 적어도 한 팀이 만들어지므로 ‘while N>=2 and M>=1 and N+M >= K+3:’로 작성한다. 정답 코드 import sys N,M,K = map(int,sys.stdin.readline().split()) team = 0 while N>=2 and M>=1 and N+M >= K+..

Baekjoon Online Judge 11047번 파이썬. 그리디

문제 링크 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 정답 코드 import sys N, K = map(int,sys.stdin.readline().split()) money = [] for i in range(N): money.append(int(sys.stdin.readline())) count = 0 bill = money[len(money)-1] def greedy(K..

Baekjoon Online Judge 1629번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net A^(m+n) = A^m * A^n (A*B)%C = (A%C)*(B%C)%C 위의 지수법칙. 분배 법칙을 알아두어야 한다. 정답 코드 A,B,C = map(int,input().split()) def solution(a,b,c): if b == 1: #a의 1제곱이면. return a%c N = solution(a,b//2,c) # a^(b//2) 구하기 if b % 2 == 0: #b가 짝수 return N*N%c #지수 법칙 사용 else: #b..

Baekjoon Online Judge 1780번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 2630번 문제와 유사하다. 다른 점은 9개로 자르는 것이기 때문에 ‘N//3’을 하고, 재귀함수의 시작점. x,y가 9개 있다는 것이다. 정답 코드 N = int(input()) matrix = [list(map(int,input().split()))for i in range(N)] result = [] def solution(x,y,N): number = matrix[x]..

Baekjoon Online Judge 1992번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 2630번과 유사한 문제이다. 하지만 2630번처럼 반복문 안에서 프린팅할 문자열 “(“나 “)”를 추가하면 불필요한 경우에도 괄호가 생기기 때문에 반복문 밖에서 추가해주어야 한다, 출력에 신경써서 풀어야한다. 정답 코드 N = int(input()) tree = [list(map(int,input()))for i in range(N)] def solution(x,y,N):..

Baekjoon Online Judge 2630번 파이썬. 분할정복

문제 링크 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 분할 정복은 문제를 나눌 수 없을 때까지 나누어서 각각 풀고 합병하는 방식이다. 함수를 재귀적으로 호출하여 문제를 해결한다는 특징이 있다. 전체 종이를 ‘N//2’ 절반씩 나누어 함수에 넣고 더 이상 나누어지지 않을 때까지 함수를 계속해서 불러왔다. 정답 코드 import sys N = int(sys.stdin.readline()) whole = [list(m..

Baekjoon Online Judge 10816번 파이썬

문제 링크 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 10815번 문제와 유사해서 계속 이진 탐색 주변만 맴돌았다. 제대로 풀지 못했다. 정답 코드 1. Counter 이용 Counter를 이용해서 풀 수 있다. Counter는 각 원소가 몇번 나오는지 딕셔너리 형태로 반환해준다. ‘from collections import Counter’를 맨 위에 해주어야 한다. count = Counter(nums_..

Baekjoon Online Judge 10815번 파이썬

문제 링크 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net print(*result) : 리스트의 요소만 출력 정답 코드 import sys N = int(sys.stdin.readline()) nums_card = list(map(int,sys.stdin.readline().split())) M = int(sys.stdin.readline()) nums_int = list(map(int,sys.stdin.read..

Baekjoon Online Judge 2110번 파이썬

문제 링크 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net mid의 값을 간격으로 공유기를 설치한다. 만약 공유기의 개수가 N보다 크면, start를 mid+1로 하여 간격을 넓힌다. 만약 공유기의 개수가 N보다 작으면, end를 mid-1로 하여 간격을 좁힌다. 가장 인접한 공유기의 거리를 최대로 하는 결과를 출력해야하기 때문에 end의 값을 출력해야한다. 5 3 / 1 6 7 8 9 의 테..

Baekjoon Online Judge 2805번 파이썬

문제 링크 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 이 문제는 1654번 문제와 유사하다. 다른 점은 나무를 자르는 것이므로 나무의 높이가 자르는 높이보다 커야한다는 점이다. 그래서 ‘if t >= mid:’ 를 추가해주어야 한다. 정답 코드 import sys N, M = map(int,sys.stdin.readline().split()) trees = list(map(int,sys.stdin.r..

728x90