본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

(220)
[c++] 백준 1712 손익분기점 백준 단계별로 풀어보기 [기본수학 1] 손익분기점 https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net [풀이] 고정비용 A, 가변비용 B, 가격 C에 대해서 손익분기점이 발생하려면 A + B * 생산대수 = C인 경우 손익분기점이 존재하지 않고, 존재한다면 ( A / ( C - B ) ) + 1이 된다. [코드] #include int main() { int ..
[c++] 백준 10872 팩토리얼 백준 단계별로 풀어보기 [재귀] 팩토리얼 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net [풀이] 팩토리얼을 재귀로 푸는 방식이야 매우 단순하고, TMP로 짠 코드에 대해서만 잠깐 복습하겠다. C++에서는 타입에 값을 부여해서 그 타입들을 가지고 연산을 할 수 있는데, 타입은 반드시 컴파일 타임에 확정되어야 한다. 따라서 컴파일 타임에 생성되는 코드로 프로그래밍을 하는 것을 메타 프로그래밍이라고 한다. 템플릿 메타 프로그래밍(TMP)를 이용해서 재귀적 구조를 나타낼 수 있다. 이때 N=1인 베이스 케이스는 템플릿 특수화를 이용해 처리한다. [코드]..
[c++] 백준 2839 설탕 배달 백준 단계별로 풀어보기 [기본수학 1] 설탕 배달 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net [풀이] n = 3*a + 5*b 이므로, 가능한 a+b의 최솟값을 구한다. a가 3과 곱해지므로 n = 3*a + 5*b를 만족하는 경우가 더 있더라도 count 값은 최소가 아니다. 따라서 n이 나누어떨어지면 바로 루프를 탈출하고, 만약 count 값이 a+b로 바뀌지 않고 여전히 0이면 정확히 나누어떨어지지 않으므로 -1을 출력한다. [코드] #incl..
[c++] 백준 2869 달팽이는 올라가고 싶다 백준 단계별로 풀어보기 [기본수학 1] 달팽이는 올라가고 싶다 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net [풀이] 처음에는 반복식을 이용해서 풀이했다. 입력범위가 커서 시간초과가 걸린다. O(1)의 상수시간 안에 풀어야 하므로 반복문을 이용하지 않고 다시 풀었다. 달팽이는 하루에 a-b 미터 씩 총 v 미터를 올라간다. 그런데 마지막 날에는 b미터만큼 미끄러지지 않으므로 총 v-b미터를 올라간 것과 같다. (v-b) / (a-b) 가 나누어 떨어지지 않으면 하루를 더 가야하므로 몫 + 1이다. [..