본문 바로가기

백준681

[구현/수학] 백준 28419 더하기 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 28419번: 더하기 정수로 구성된 수열 $A_1, A_2, \cdots, A_N$이 주어진다. 우리는 이 수열에 아래 연산을 원하는 만큼 반복할 수 있다. 인접한 세 값을 1씩 증가시킨다. 이 연산을 최소한으로 사용해 수열의 홀수 번째 www.acmicpc.net 2. 문제 풀이 주어진 수열의 홀수합과 짝수합을 같게 만드는 문제입니다. 인접한 3개의 수만 +1씩 올릴 수 있으며, 해당 연산을 최소로 사용해서 같게 만들어야 합니다. 3. 코드 import sys input = sys.stdin.readline #입력 N = int(input()) lst = list(map(int, input().split())) #홀수, 짝수합 odd_sum = 0 eve.. 2023. 8. 2.
[구현/수학] 백준 24313 알고리즘 수업 - 점근적 표기 1 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 24313번: 알고리즘 수업 - 점근적 표기 1 f(n) = 7n + 7, g(n) = n, c = 8, n0 = 1이다. f(1) = 14, c × g(1) = 8이므로 O(n) 정의를 만족하지 못한다. www.acmicpc.net 2. 문제 풀이 빅오표기법 O(n)의 증명 문제입니다. 시간복잡도를 계산하는 방법에는 빅 오메가(최적), 빅 세타(평균) 표기법도 있지만 압도적으로 빅 오(최대) 표기법을 많이 사용합니다. 가장 구하기 쉽기도 하고, SW설계에서 최악의 상황을 많이 가정하기 때문입니다. (최악의 상황에서 정상적으로 작동하느냐가 중요하죠.) 3. 코드 # 입력 a1, a0 = map(int, input().split()) c = int(input.. 2023. 7. 24.
[구현/수학] 백준 18110 solved.ac - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 2. 문제 풀이 30% 절사평균을 사용하여 solved.ac의 난이도를 산출합니다. 자료의 총 개수에서 상위 n%, 하위 n%를 제거한 평균 절사평균은 극단적인 표본을 제거하기 위해 상하위 n%를 제거한 후의 평균입니다. 평점이나 난이도를 매길 때, 극단적으로 높게 주거나 낮게 주는 사람들이 꽤 있죠... 그런 사람들로 인해 평균이 왜곡되는 것을 막고자, 절사평균을 사용하기도 합니다. 사.. 2023. 7. 24.
[구현/수학] 백준 28352 10! - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 28352번: 10! BOJ 채점 환경에서 int 자료형은 최대 $2^{31}-1=2\,147\,483\,647$까지의 정수를 저장할 수 있고, C/C++의 long long과 Java의 long은 최대 $2^{63}-1=9\,223\,372\,036\,854\,775\,807$까지의 정수를 저장할 수 있다. www.acmicpc.net 2. 문제 풀이 팩토리얼을 구하는 문제입니다. 3. 코드 import sys input = sys.stdin.readline # 입력 N = int(input()) # 출력 res = 1 for i in range(11, N+1): res *= i print(6*res) 문제에서 10!초는 6주와 같다고 이미 주어졌습니다... 2023. 7. 20.
[구현/수학] 백준 10093 숫자 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10093번: 숫자 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 문제 풀이 주어진 A, B 사이의 숫자와 개수를 구하는 문제입니다. 3. 코드 N, M = map(int, input().split()) if N > M: N, M = M, N print(M-N-1 if M-N-1 > 0 else 0) for i in range(N+1, M): print(i, end=" ") 여기서 주의할 점은 A < B로 주어지지 않는 점입니다. 그러므로 대소관계부터 확인한 후, range 함수를 이용해서 두 수 사이의 숫자를 출력합니다. 2023. 7. 18.
[구현/수학] 백준 27434 팩토리얼 3 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 27434번: 팩토리얼 3 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 문제 풀이 N 팩토리얼을 구하는 문제입니다. 3. 코드 N = int(input()) res = 1 for i in range(1, N+1): res *= i print(res) 반복문을 이용해서 팩토리얼을 구현합니다. 2023. 7. 18.
[구현/수학] 백준 27433 팩토리얼 2 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 27433번: 팩토리얼 2 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 문제 풀이 n 팩토리얼을 구하는 문제입니다. 3. 코드 N = int(input()) res = 1 for i in range(1, N+1): res *= i print(res) 팩토리얼은 주로 반복문 예제로 많이 인용됩니다. 팩토리얼 개념 자체가 1씩 올라가며 곱하는 방식이라, 반복문을 이해하는 데에 적합하긴 하죠. 2023. 7. 18.
[자료구조/큐] 백준 10845 큐 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 2. 문제 풀이 push X: 정수 X를 큐에 넣는 연산 pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력 (비어있으면 -1 출력) size: 큐에 들어있는 정수의 개수를 출력 empty: 큐가 비어있으면 1, 아니면 0을 출력 front: 큐의 가장 앞에 있는 정수를 출력 (비어있으면 -1 출력) back: 큐의 가장 뒤에 있는 정수를 출력 (비어있으면 -1 출력) 큐를 구현하는 문제입니.. 2023. 7. 17.
[자료구조/스택] 백준 10828 스택 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 2. 문제 풀이 - push X: 정수 X를 스택에 넣는 연산 - pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력 (빈 스택이면 -1 출력) - size: 스택에 들어있는 정수의 개수 출력 - empty: 스택이 비어있으면 1, 아니면 0을 출력 - top: 스택의 가장 위에 있는 정수를 출력 (빈 스택이면 -1 출력) 스택을 구현하는 문제입니다. 2022.02.10 - [Algori.. 2023. 7. 17.