Python_BOJ
-
백준 1049_기타줄(python) : 그리디-몫(//)과 나머지(%)Python_BOJ/실버 4 2024. 4. 23. 11:08
1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 여러 브랜드를 섞어서 살 수 있다는 점을 기억하면서 풀기! 정답 코드1(아래에 더 간단한 코드 있음) N, M = map(int, input().split()) package = [] piece = [] for _ in range(M): a, b = map(int, input().split()) package.append(a) piece.append(b) result1, result2, result3 = 0, 0, 0 N1, N2, N3 = N, N, N #..
-
백준 1018_체스판 다시 칠하기(python)Python_BOJ/실버 4 2024. 4. 12. 11:40
1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 정답 코드 N, M = map(int, input().split()) chess = [list(input()) for _ in range(N)] # 문자열 하나씩 리스트에 저장 list(str) count = [] # 8*8마다 바뀌는 횟수 세서 저장 for a in range(N-7): for b in range(M-7): idx1 = 0 # W로 시작, WBWB idx2 = 0 # B로 시작, BWBW for i in range(a, a+8): for..
-
백준 2740_행렬 곱셈(python)Python_BOJ/실버 5 2024. 4. 7. 09:41
2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 정답 코드 N, M = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(N)] M, K = map(int, input().split()) B = [list(map(int, input().split())) for _ in range(M)] for n in range(N): temp_lst = [] for k in range(K): temp_sum = 0 f..
-
백준 2563_색종이(python) : sum(2차원 배열, [])Python_BOJ/실버 5 2024. 4. 5. 11:43
2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 정답 코드 N = int(input()) # 색종이의 수 paper = [[0 for column in range(101)] for row in range(101)] for _ in range(N): x, y = map(int, input().split()) for i in range(x, x+10): for j in range(y, y+10): paper[i][j] = 1 result = sum(paper, []) # 2차원 배열과 빈 리스트를 받아 1차원 배열로 pri..
-
백준 2167_2차원 배열의 합(python) : DP(Dynamic Programming)Python_BOJ/실버 5 2024. 4. 4. 14:03
2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 정답 코드 N, M = map(int, input().split()) s = [list(map(int, input().split())) for _ in range(N)] r = [[0]*(M+1) for _ in range(N+1)] for n in range(1, N+1): for m in range(1, M+1): r[n][m] = s[n-1][m-1] + r[n-1][m] + r[n][m-1] - r[n-1][m-1] # 코드 ..
-
백준 1676_팩토리얼 0의 개수(python)Python_BOJ/실버 5 2024. 4. 1. 11:42
1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 코드1 from math import factorial N = int(input()) result = str(factorial(N)) cnt = 0 for i in result[::-1]: if i != '0': print(cnt) break cnt += 1 math 라이브러리의 factorial 함수를 사용했다. [::-1] 인덱스를 활용해 맨 뒤부터 0인지 아닌지를 판단하고, 0이면 cnt에 1씩 더해준다. 0이 아니라면 cnt를 출력하고 끝낸다. 정답 코드 2 N = int(input()) print(N//5 + N//25 + N//12..
-
백준 1181_단어 정렬(python) : sort(key=len), list(set)Python_BOJ/실버 5 2024. 3. 23. 18:35
1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 내가 썼던 정답 코드(아래에 더 간결한 코드 있음) N = int(input()) lst = [] for _ in range(N): lst.append(input()) result = [] for i in range(1, 51): lst2 = [] for x in lst: if len(x) == i: lst2.append(x) if len(lst2) == 1: result.append(*lst2) elif len(lst2) >= 2: lst2 = li..
-
백준 1934_최소공배수(python) : 유클리드 호제법, .copy()Python_BOJ/브론즈 1 2024. 3. 15. 12:37
1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 정답 코드 N = int(input()) for i in range(N): a, b = map(int, input().split()) lst = [a, b].copy() if a