문제 URL: www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 다음 문제는 N! 의 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 문제로 (=숫자 가운데에 존재하는 0은 신경 쓰지 않음, 끝자리의 연속되는 0의 개수를 구해야 함) 팩토리얼 값을 직접 구하는 문제가 아니라 2와 5의 개수를 이용하여 푸는 문제였다. 2와 5를 곱해야 10이 나오게 되므로 결과적으로 1부터 n까지 수를 각각 소인수분해했을 때 나오게 되는 모든 2와 5가 몇 쌍을 이루는지 개수를 구하면 되는데, 여기서 당연히 5의 개수가 더 적으므로 결국 5의 개..
문제 URL: www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 다음 문제는 방 번호를 만들 때 필요한 세트의 개수의 최솟값을 출력하는 문제로 6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다. 이 문제는 switch문을 이용하였는데 각 숫자의 개수를 세어 필요한 세트의 개수를 알아내었다. 여기서 6과 9는 혼용하여 사용될 수 있으므로 두 수의 개수를 같은 변수에 저장해 주고 두 수의 개수를 저장한 변수를 2로 나누어 주었다. 주의할 점은 변수에 저장된 수가 홀수일 때는 +1을 해주어야 한다는 점이다. #include #inc..
문제 URL: www.acmicpc.net/problem/5532 5532번: 방학 숙제 한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100) 항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다. www.acmicpc.net 다음 문제는 상근이가 겨울 방학 동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 문제이다. 이 문제는 하루에 풀 수 있는 양이 정해져 있으므로 전체 페이지를 하루에 풀 수 있는 양으로 나누어주면 되는 간단한 문제인데, 한 가지 주의할 점이 있다면 전체 페이지 수가 하루에 풀 수 있는 페이지로 나누어 떨어질 때와 나누어 떨어지지 않을 때의 최대 날의 수..
문제 URL: www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net 다음 문제는 모든 행과 모든 열에 한 명 이상의 경비원이 있다고 할 때, 몇 명의 경비원을 최소로 추가해야 하는지 구하는 프로그램이다. 이 문제는 경비원(X)이 없는 행과 열의 개수를 각각 세어 행과 열 중 더 큰 값을 출력하면 된다. 위 내용을 다음과 같이 구현하였다. 한 행을 문자열로 입력받고 그 행에 X가 있는지 find() 함수를 통해 확인 만약 X가 존재하지 않는다면 rowCo..
문제 URL: www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 다음 문제는 10대의 컴퓨터에서 총데이터의 개수는 항상 a^b개의 형태로 주어질 때 마지막 데이터가 처리될 컴퓨터의 번호를 구하는 프로그램이다. 이 문제는 단순히 a를 b번 곱하는 반복문을 반복한 뒤 그 값을 10으로 나눈 나머지를 구하면 되지만 그렇게 한다면 실행 시간이 매우 커지게 되어 시간제한을 초과한다. 따라서 이 문제를 a의 끝자리만 b번 곱해주는 방식으로 풀었는데 코드는 아래와 같다. 주의할 점!..
문제 URL: www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 다음 문제는 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램으로 함수를 이용하여 소수를 찾는 코드를 따로 작성해주었다. 소수는 1과 자기 자신 만으로만 나누어져야 하기 때문에 1과 자기 자신 사이의 수로 나누었을 때 나누어진다면 그 수는 소수가 아니게 된다. 여기서 중요한 점은 굳이 두 수(1과 자기 자신) 사이에 있는 모든 수로 나누어줄 필요가 없다는 점이다. 주어진 수가 n이라고 했을 때 소수를 판단하기 위해서는 2부터 √n까지만 확인하면 된다..
문제 URL: www.acmicpc.net/problem/2420 2420번: 사파리월드 첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000) www.acmicpc.net 다음 문제는 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램으로 그냥 두 수를 빼주기만 하면 되는 간단한 문제였다. 하지만 두 번이나 틀렸는데, 두 번 다 범위에 문제가 있었다. 이 문제의 n과 m의 범위는 (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)이지만 두 수를 빼주었을 때 최대 40억까지 가능하므로 int형을 사용하게 된다면 범위에서 벗어나게 된다. 처음에 풀 때는 int형으로 작성하여 틀려서, 범위를 깨닫고 그 뒤에..
문제 URL: www.acmicpc.net/problem/2455 2455번: 지능형 기차 최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. www.acmicpc.net 다음 문제는 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램이다. 내린 사람의 수: a 탄 사람의 수: b 처음에는 탄 사람 수(b)가 내린 사람의 수(a)보다 작을 때(a>b), 그 전까지 버스에 존재했던 사람 수가 최대인줄 알았는데 아니었다. 더보기 Ex. 0 10 10 5 1 50 54 0 과 같은 경우 존재 따라서 한 정류장을 거치고 남아있는 사람 수를 sum이라는 변수에 입력하고..
문제 URL: www.acmicpc.net/problem/1952 1952번: 달팽이2 M줄 N칸으로 되어 있는 표 위에, 달팽이 모양으로 선을 그리려고 한다. 위의 그림은 M=5, N=3의 예이다. 이제 표의 왼쪽 위 칸(ㅇ)에서 시작하여, 오른쪽으로 선을 그려 나간다. 표의 바깥 또는 이미 www.acmicpc.net 다음 문제는 주어진 M 줄 N칸에서 선이 꺾어지는 횟수를 구하는 프로그램이다. 출력 표의 왼쪽 위 칸(ㅇ)에서 시작하여, 오른쪽으로 선을 그려 나가며 표의 바깥 또는 이미 그려진 칸에 닿아서 더 이상 이동할 수 없게 되면, 시계방향으로 선을 꺾어서 그려나간다. 아래는 M=5, N=3의 예이다. ㅇ → ↘ ↗ ↘ ↓ ↑ ↓ ↓ ↑ 끝 ↓ ↖ ← ↙ 이 문제를 처음 봤을 때는 규칙을 어떻게..