문제 URL: www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 이 문제는 배열의 최솟값과 최댓값을 찾아내어 출력하는 문제이다. 처음에 이 문제를 풀 때 for 반복문을 중첩하여 배열의 처음부터 끝까지 정렬시켰다. 하지만 그렇게 코드를 짜면 실행시간이 너무 오래 걸리고, 실제로 필요한 값은 최댓값과 최솟값뿐이기 때문에 비효율적이었다. 따라서 다시 방법을 생각해냈는데, 방법은 다음과 같다. 먼저, 반복문을 통해 배열의 첫 번째..
문제 URL: www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 다음 문제는 한수를 구하는 문제로 한수란, 어떤 양의 정수 X의 각 자리가 등차수열을 이루는 수이다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. 여기서 한 자리 수는 그 자체로 한수가 되며, 두 자리 수 역시 모두 한수인데, 이는 두 자리 수의 각 자리의 차이가 일정하여 항상 등차수열을 이루기 때문이다. 따라서 1부터 99까지의 수는 항상 한수이다. 세 자리 수는 한수가 될 수 있..
문제 URL: www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 다음 문제는 더하기 사이클을 반복하다가 원래 숫자로 돌아올 때 몇 번의 사이클을 반복하는지 사이클 횟수를 구하는 문제이다. 더하기 사이클은 다음과 같이 반복되는데, 0보다 크거나 같고 99보다 작거나 같은 정수가 주어질 때, 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 ..
문제 URL: www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 다음 문제는 입력한 숫자들 중 x보다 작은 수들을 선택하여 출력하는 문제로 변수를 사용해 입력 배열과 출력 배열을 각각 만든 뒤, 입력 배열에서 if문으로 조건에 맞는 값들을 선택하여 출력 배열에 할당하는 방식으로 풀이했다. 여기서, 주의했던 점은 입력 배열 list에 입력 받을 숫자의 개수 즉, n의 값을 모르기 때문에 배열의 크기가 컴파일 실행 시에 결정되는 동적 배열로 생성하..
문제 URL: https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 다음 문제는 알람 시계를 45분 빨리 맞추는 상황으로 간단한 if문이 사용된다. 이 문제는 3가지 상황으로 나뉘어져 있는데 1) M(minute)이 45분을 넘는 상황, 2) M이 45분을 넘지 않으면서 H(hour)가 0이 아닌 상황, 3) M이 45분을 넘지 않으면서 H가 0인 상황으로 구분되어 있다. 따라서 각각의 상황에 맞게 코드를 짜면 아래와 같이 나오게 된다. 한 가지 아쉬운 점이..