본문 바로가기

728x90

백준

[백준알고리즘] 2004번: 조합 0의 개수 -Java [백준알고리즘] 2004번: 조합 0의 개수 -Java https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다. www.acmicpc.net 이전 문제였던 팩토리얼 0의 개수와는 조금 다르다. 팩토리얼 0의 개수 문제에서는 5로 나누고 5의 제곱으로 나누고 했던 이유는 5 이전에 이미 2가 존재해서 10이 당연히 되기 때문에 5의 제곱수들로만 풀어도 가능했다. 하지만 이항계수에서는 분자를 분모로 약분할 수 있기 때문에 2의 존재 가능성의 여부도 따져줘야 한다. 즉 약분을 했을 때 10을 몇 개나 곱하느냐를 구하면 되는 문제이다. 따라서 5의 개수와 2의 개수를 각각 구해주고 둘 중의.. 더보기
[백준알고리즘] 1676번: 팩토리얼 0의 개수 -Python [백준알고리즘] 1676번: 팩토리얼 0의 개수 -Python https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 오 되게 신기했던 문제다. 근데 생각보다 쉬웠다. 일단 팩토리얼을 진행한 후 0이 1의 자리부터 몇 개까지 있는가에 대한 문제이다. 테스트 케이스로 나와있는 10!의 경우 3628800이 나온다. 하지만 무작정 N!를 진행한 후에 0의 개수를 카운팅 하는 문제는 아닐 것이다. 일단 주어진 범위에서도 500!를 하더라도 엄청나게 큰 수가 나온다... 이거는 각자 계산을 해보도록 하자 :) 여기서 그러면 규칙이 있을텐데 그 .. 더보기
[백준알고리즘] 9375번: 패션왕 신해빈 -Python [백준알고리즘] 9375번: 패션왕 신해빈 -Python https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 www.acmicpc.net 이 문제는 공식만 찾으면 바로 풀 수 있는 문제라고 생각한다. 처음에 무슨 .. 더보기
[백준알고리즘] 11051번: 이항계수 2 -C [백준알고리즘] 11051번: 이항계수 2 -C https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이번 문제도 이전 문제와 같이 이항 계수문제이다. 하지만 범위가 훨씬 더 커졌기 때문에 아까와 같은 방식으로 하려고 하면 int의 범위를 넘어서 overflow를 일으킬 것이다. double의 경우는 해보지 않았지만 속도가 느릴 것이다. 하지만 여기서는 모듈러 연산(Modular Arithmetic: 나머지 연산)을 이용해서 int범위 안에서 돌아가도록 할 것이다. 문제를 주었을 때 10007로 나눈 나머지를 구하라고 .. 더보기
[백준알고리즘] 11050번: 이항계수 1 -C [백준알고리즘] 11050번: 이항계수 1 -C https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이항 계수의 문지입니다. 이 문제는 범위가 짧기 때문에 이항 계수의 식을 그대로 넣어서 풀어주도록 합니다. nCk = n! / (k! * (n-k)!) 이때 저는 범위만큼 팩토리얼을 배열에 저장을 한 후 가져다가 쓰는 방식을 사용했습니다. #include int factorial_arr[11]; void factorial(void); int main(void){ int N, K; scanf("%d", &N); scanf("%.. 더보기
[백준알고리즘] 3036번: 링 -C [백준알고리즘] 3036번: 링 -C https://www.acmicpc.net/problem/3036 3036번: 링 문제 상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다. 상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다. 링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면, www.acmicpc.net 이 문제는 간단했습니다. 출력은 (첫번째 링의 반지름 / i번째 링의 반지름)을 약분해서 구하면 됩니다. .. 더보기
[백준알고리즘] 2981번: 검문 -Python [백준알고리즘] 2981번: 검문 -Python https://www.acmicpc.net/problem/2981 2981번: 검문 문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 www.acmicpc.net 이번 문제는 정답률이 21%인 난이도 높은 문제이다... 뭔가 감은 잡힌 것 같은데 식으로 만.. 더보기
[백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python [백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 최대공약수(GCD : Greatest Common Divisor)와 최소공배수(LCM : Least Common Multiple)를 구하는 문제다. 이 문제는 유클리드 호제법을 알고 있으면 쉽게 풀 수 있는 문제이다. 유클리드 호제법은 GCD를 쉽게 구할 수 있는 알고리즘 중의 하나이다. 이 알고리즘은 식을 간결하게 해주는 특징이 있다. 두 수 a와 b (a > b)가 있다고 할 때, a와 b의 최대.. 더보기

728x90