문제해설 해당 문제는 규칙성을 찾아 처리하면 되는 문제이다. 이러한 수학문제들은 보통 규칙성이 존재하고 해당 규칙성들을 수식으로 표현하면 문제풀이가 수월해지는 것 같다. 위 표에서 볼 수 있듯 파란색부분은 (n을 5로 나눈 나머지가 1 또는 3) n/5 + 1개의 봉지가 필요함을 확인할 수 있고, 빨간색 부분은 (n을 5로 나눈 나머지가 2 또는 4) n/5 + 2개의 봉지가 필요한 것을 확인할 수 있었다. 그리고 4, 7의 경우에만 분류할 수가 없었다. 결과코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main..
문제해설 해당 문제는 다양한 방법을 종합해서 풀어보았다. char 자료형을 다루었고, 반복문 및 중첩 반복문을 사용하고, 조건문, 배열에 대한 개념 등을 사용하였다. 해당 코드에 대한 설명은 주석으로 처리하였다. 결과코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String inputWord = br.readL..
문제해설 해당 문제는 문자열을 목적에 맞게 처리하는 과정에서 반복문을 여러번 중첩하여 사용해야하는 문제이다. 먼저 메인 목적을 해결하기 위해서 반복문을 총 3번 사용하였다. 첫 반복문은 test case의 횟수를 시행하기 위한 반복문이고, 두번째 반복문은 문자열의 길이를 측정하고 각 자리의 문자마다 반복을 해주기 위한 반복문이고, 세번째 반복문은 각 문자를 원하는 만큼 반복출력하기 위한 반복문이다. 추가로 빠른 읽기 쓰기를 위해서 BufferedReader와 BufferedWriter를 사용하였다. 그리고 그때 그때 출력하기보다는 bw.append를 통해 버퍼에 쌓아둔 뒤 마지막에 결과값을 출력하는 형식으로 출력을 진행하였다. 결과코드 import java.io.BufferedReader; import ..
문제해설 해당 문제는 처음에 입력한 숫자만큼 O와 X의 배열이 한줄씩 주어지고 해당하는 점수를 산출하여 각각 출력하는 문제이다. 반복문을 이중으로 사용했다. 첫 반복문은 처음에 입력한 숫자만큼 반복하여 모든 배열을 받을 수 있도록 설정하고, 두번째 반복문은 각 배열마다 O와 X의 점수를 산정하여 차근차근 점수를 매길 수 있도록 설정하였다. 여기에서 O일 경우 eachScore를 1씩 증가시켜 totalScore에 더하게 하고 X일 경우 eachScore를 초기화 시켰다. 결과코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static ..
해당 문제는 10번동안 입력한 숫자를 42로 나누었을 때 나머지들을 구하고 해당 나머지들의 갯수를 중복 없이 갯수를 구하여 출력하는 문제이다. 처음에는 반복문을 통해 boolean배열을 이용해 나머지를 index로 생각하여 true로 변경하여 나타낸 후, 해당 배열에서 true의 수를 count하는 방식으로 진행했었다. 이후 다른분들의 코딩 결과를 보니 위의 방법보다 코드의 길이가 간결하고 사용하기 쉬운 HashSet 클래스를 알게되었고 해당 방식을 통해 다시 풀어보았다. HashSet의 특징으로 크게 해시 테이블을 이용하는 것과 중복된 값을 저장하지 않는다는 점이 있었다. 해당 HashSet에 대해서는 나중에 JAVA 카테고리에 포스팅해보려 한다. import java.io.BufferedReader;..
5597번 문제는 30개의 숫자 중에서 제시되지 않은 숫자를 찾아 결과값으로 출력하는 문제이다. 문제 해결을 위해 boolean 배열을 이용하였고 반복해서 입력받은 숫자들을 인덱스로 활용해 해당 배열의 값을 true로 변환시켜 준 다음 완료 후 다시 반복문을 통해 인덱스 1부터 30까지 돌려주어 false로 남아있는 인덱스 값을 출력해주는 과정을 통해 해결하였다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String args[]) throws IOException{ BufferedReader br = n..
이 문제는 9개의 자연수가 주어졌을 때 해당 자연수들 중 최댓값을 구하고 해당 숫자의 순번까지 구하는 문제인데 배열로 만든 뒤 (사실 배열로 안만들어도 충분히 풀 수 있는 문제이긴 하다) 최댓값과 해당하는 값의 인덱스 값을 받아와 출력해보려고 한다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr =..
문제를 보면 N개의 정수가 주어질 때 해당 값들 중에서 최솟값과 최댓값을 구하면 되는 문제인데 N개의 수를 입력받아 배열로 만들고 해당 배열을 이용해서 최댓값과 최솟값을 찾으면 될 것 같다. 먼저 Scanner를 이용해서 작성해 보자 import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; int max = -1000000;// max는 가능한 정수 중 가장 작은 값을 두고 int min = 1000000;// min은 가능한 정수 중 가장 큰 값을 두고 // ..