문제 - 육각형으로 이루어진 벌집에는 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매김 - 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지 출력 - 시작과 끝 방을 포함한 개수를 출력 해결방법 문제에 주어진 그림을 보면 어렵지 않게 규칙을 찾을 수 있다. 중앙에 위치한 1은 통과해야 하는 벌집의 개수가 1개이고, 그 다음 6개의 벌집은 2개를 통과해야 하고, 그 다음 12개의 벌집은 3개를 통과해야 한다. 즉, 통과해야 하는 벌집의 개수가 1개씩 늘어날 때마다 위치할 수 있는 벌집은 6개씩 늘어나는 것을 알 수 있다. 코드 import java.io.*; import java.util.*; class M..
문제 - 어떤 자연수 N이 있을 때, 그 자연수의 분해합은 N과 N을 이루는 각 자리수의 합 - 어떤 자연수 M의 분해합이 N인 경우, M은 N의 생성자 - 어떤 자연수의 경우에는 생성자가 없을 수도 있음 - 생성자가 여러 개인 자연수도 있을 수 있음 - 자연수 N이 주어졌을 때, N의 가장 작은 생성자 출력 - 생성자가 없는 경우에는 0 출력 해결방법 1부터 주어진 자연수까지 숫자를 1씩 증가시키면서 분해합을 구하는 방식으로 코드를 작성하였다. 분해합을 구할 때에는 각자리 수를 더해주기 위해서 나머지 연산, 나누기 연산을 활용하였고, 연산이 끝나면 해당 숫자를 또 더해줘 분해합을 구한 뒤 해당 숫자가 생성자인지 확인할 수 있도록 하였다. 코드 import java.io.*; import java.uti..
문제 - 1부터 N까지의 번호가 붙은 N장의 카드 - 카드는 1번부터 N번까지 순서대로 놓여 있음 - 카드가 한 장 남을 때까지 아래 내용 반복 1. 제일 위에 있는 카드 버리기 2. 그 다음 제일 위에 있는 카드 제일 아래 있는 카드 밑으로 옮기기 - 제일 마지막에 남게 되는 카드 출력 해결방법 queue에 순서대로 카드를 넣고, 맨 위 카드는 버리고 그 다음 카드를 맨 뒤로 다시 넣는 과정을 반복하였다. 카드가 한 장 남았을 경우에는 해당 카드를 출력할 수 있도록 하였다. 코드 import java.io.*; import java.util.*; class Main{ public static void main(String[] args) throws Exception { BufferedReader br ..
문제 - N은 홀수 - N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램 1. 산술평균 : N개의 수들의 합을 N으로 나눈 값 2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값 4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이 - 산술평균은 소수점 이하 첫째 자리에서 반올림한 값을 출력 - 최빈값이 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력 해결방법 1. 산술평균 - 숫자들을 입력 받으면서 sum 변수를 두어 모든 합을 저장해두고 sum을 주어진 입력의 개수로 나누어 평균을 구할 수 있도록 하였다. 이 때, 소수점 이하 첫째 자리에서 반올림한 값을 출력하라고 하여 Math.roun..
문제 - 프린터 기기는 인쇄하고자 하는 문서를 인쇄 명령을 받은 순서대로, 즉 먼저 요청된 것을 먼저 인쇄(FIFO, First In First Out) - 상근이는 새로운 프린터기 내부 소프트웨어를 개발. 조건은 아래와 같음 1. 현재 Queue의 가장 앞에 있는 문서의 중요도 확인 2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤로 3. 그렇지 않다면 바로 인쇄 - 현재 Queue에 있는 문서의 수와 중요도가 주어졌을 때, 어떤 한 문서가 몇 번째로 인쇄되는지 알아내는 것이 목표 해결방법 입력 받은 문서의 중요도와 인쇄 순서를 LinkedList에 저장하여 각 문서를 관리하도록 하였다. 처음 입력을 받으면서 M 번째에 있는 문서..
문제 - 주어진 숫자 M이상 N이하의 소수를 모두 출력 - 1
문제 - N개의 정수 A[1], A[2], ..., A[N]이 주어짐 - 이 안에 X라는 정수가 존재하는지 알아내는 것 - 모든 정수의 범위는 -2^31보다 크거나 같고 2^31보다 작음 고찰 처음에는 배열에 입력받은 것(input 배열)을 돌면서 입력받은 숫자가 있는지 돌아보도록 코드를 작성하였다. 더보기 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int inputNum = Integer.parseInt(br...