본문 바로가기

PS/BOJ12

[PS] 백준 1712번 - 손익분기점 | Python 백준 1712번 문제 Write-Up입니다. https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 손익분기점을 구하면 되는데... 총지출보다 총수입이 많아지는 때를 구하면 됩니다. 판매량을 x라고 했을 때, 총지출은 A + (B * x)이고, 총수입은 C * x입니다. 이 때 최초로 A + (B * x) < C * x 식을 만족하는 x의 값을 찾으면 됩니다. 반복문으로 직접 찾는 방법도 있지만, 입력 범위가 21억까지이기 때문에 시간 초과가 나옵니다. 따.. 2023. 1. 13.
[PS] 백준 10809번 - 알파벳 찾기 | Python 백준 10809번 문제 Write-Up입니다. https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 알파벳 인덱스를 저장하는 26개의 배열을 정의하고, -1로 모두 초기화를 합니다. 이후 입력받은 문자열을 검사하는데, 해당 문자열이 처음 나올 경우(해당 문자에 해당하는 배열 값이 -1인 경우) 인덱스를 배열에 저장합니다. Python의 경우 배열 통째로 출력하면 오답 처리되네요. C언어처럼 값 하나하나 다 끄집어내서 출력해야 합니다. d.. 2023. 1. 13.
[PS] 백준 2908번 - 상수 | Python 백준 2908번 문제 Write-Up입니다. https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 세 자리 숫자 입력 받은 후 거꾸로해서 비교하면 됩니다. int를 직접 입력받아 /와 % 연산을 이용해도 되지만, 문자열로 입력받아 뒤집은 다음 int 형변환해서 비교해도 됩니다. def solution(n, m): return n if n > m else m if __name__ == "__main__": n, m = input().split() print(sol.. 2023. 1. 13.
[PS] 백준 1463번 - 1로 만들기 | Python 백준 1463번 문제 write-up입니다. https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제에 주어진 연산을 이용하여 입력되는 수를 1로 만드는데, 이 연산을 사용하는 최솟값을 출력하면 됩니다. 주어진 연산은 다음과 같습니다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 직접 1로 만드는 경우의 수를 계산하게 되면 시간 초과가 나기 때문에, dynamic programming을 이용하여 문제를 풀어야 합니다. dynamic programming에 관한 내용은 다음 게시물을 참고하시기 바랍니다. h.. 2023. 1. 11.
[PS] 백준 2740번 - 행렬 곱셈 | Python 백준 2740번 문제 write-up입니다. https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 행렬 곱셈 알고리즘을 작성하는 문제입니다. 다른 조건 없이 행렬 곱셈 알고리즘을 코드로 구현하면 끝나는 문제이기 때문에, 풀이는 아래에 link된 게시물을 참고해주세요. https://spareone.tistory.com/72 [Algorithm] C++로 구현한 행렬 곱셈 알고리즘 행렬의 곱셈 알고리즘은 여러 가지가 존재합니다. 이번.. 2022. 12. 21.
[PS] 백준 10825번 - 국영수 | Python 백준 10825번 문제 write-up입니다. https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 정렬 기준대로 입력값을 정렬하면 됩니다. 문제에서 제시하는 정렬 기준은 다음과 같습니다. 1. 국어 점수가 감소하는 순서로 2. 국어 점수가 같으면 영어 점수가 증가하는 순서로 3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문.. 2022. 11. 16.
[PS] 백준 1003번 - 피보나치 함수 | C++ 백준 1003번 문제 write-up입니다. https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 피보나치 함수 문제입니다. 다만, 문제에는 피보나치 수열의 결과가 아니라 각 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 출력하라고 되어 있습니다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } 문제에서 주어진.. 2022. 11. 1.
[PS] 백준 10814번 - 나이순 정렬 | C++ 백준 10814번 문제 write-up입니다. https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 나이 순으로 오름차순 정렬하면 됩니다. 다만, 나이가 같으면 먼저 가입한 순서(입력받은 순서)로 정렬한다는 조건이 있습니다. C++에서 정렬하려면 algorithm header에 있는 sort()를 사용하면 됩니다. 다만, 원소가 같은 경우 어떤 원소가 먼저 정렬될 지 예측할 수 없습니다. 따라서 이 같은 경우 stable_sort()를 사용합니다. sta.. 2022. 10. 28.
[PS] 백준 10824번 - 네 수 | C++ 백준 10824번 문제 write-up입니다. https://www.acmicpc.net/problem/10824 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net A, B를 붙인 수와 C, D를 붙인 수를 더하면 됩니다. 두 숫자를 붙인다는 것은 A = 10, B = 20일 때, 1020이 되는 것입니다. A B를 붙인다고 하면, B의 자릿수를 먼저 구해야 합니다. 이후 자릿수를 하나 추가해 A에 곱하고 B를 더하면 됩니다. 문제 조건을 보면, 자연수 범위가 1,000,000까지입니다. 자연수 4개 모두 최댓값으로 입력받으면 int 범위를 벗어나기 때문에 long long을 써야 합니다. #incl.. 2022. 10. 28.
[PS] 백준 25305번 - 커트라인 | C++ 백준 25305번 문제 write-up입니다. https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 전체 인원에서 상을 받는 참가자의 가장 낮은 점수를 출력하면 됩니다. 전체 인원의 점수 / 상을 받는 사람의 수를 입력받고, 전체 인원 점수를 내림차순 정렬해서 마지막으로 상을 받는 사람의 점수를 출력하면 됩니다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int .. 2022. 10. 24.