목록Programming/JAVA (67)
Information Security Study
사람 수인 N과 제거될 번호인 K를 입력받는다.그리고 모두 제거될 때까지 1에서 N번의 사람 중 K번째인 사람이 제거된다. import java.util.*;import java.lang.*;import java.io.*;class Main { public static void main(String[] args) { // 큐 생성 Queue queue = new LinkedList(); // 입력을 위한 scanner 선언 Scanner scanner = new Scanner(System.in); // 사람 수 입력 int N = scanner.nextInt(); // 큐에 1부터 N까지 추가 fo..
첫 줄에 숫자 카드의 개수(N)를 입력한다.두 번째 줄에는 N개의 카드 숫자를 입력한다. 세 번째 줄에는 카드의 개수를 출력할 M을 입력하고마지막 줄에는 개수가 궁금한 카드 숫자를 입력한다. 마지막 줄에 입력한 카드 숫자의 개수를 순서대로 출력한다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.HashSet;import java.util.Scanner;import java.util.Stack;import java.util.StringTokenizer;public class Main { public static..
N개의 정수를 입력받아 집합을 만들고M개를 입력받아 집합에 입력한 숫자가 있는지 입력한 순서대로 1(집합에 있는 경우) 또는 0(집합에 없는 경우)을 출력하는 문제이다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.Scanner;import java.util.Stack;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { Scanner scanne..
위치(L), 높이(H)가 주어졌을 때 가장 작은 면적의 값을 구하는 문제이다.그림1을 잘 보면 지붕을 표현한 검은색 실선이가장 큰 값인 8, 10을 기준으로 양극단에서 상승선을 이루고 있는 것을 볼 수 있다.이전의 값보다 큰 값이 나타난 경우 선이 꺾이니 큰 값이 나타날 때 stack에 push하는 방식으로 풀어보았다. 입력 횟수를 가장 먼저 입력한 뒤,횟수에 맞게 각 줄마다 위치(L), 높이(H)를 입력한다. 입력을 모두 마치면 면적이 출력된다. package boj;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util...
package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); // 사용자로부터 표준 입력으로 정수 N을 받음 int[] dp = new int[N+1]; // 각 무게별 필요한 최소 봉지 개수 저장 // 만약 N이 3 이상이면, 무게가..
팩토리얼 계산 후 숫자 맨 뒤에 연속적으로 존재하는 0의 개수를 출력하는 문제이다. 10을 입력하면 10!을 계산한다. 10! = 3628800 이므로 2가 출력된다. 뒷자리가 0이 나오려면 그 수에 2와 5가 곱해져 있어야 한다. = 소인수분해 시 2X5가 짝지어서 존재한다. 조금 더 생각해 보면 팩토리얼은 연속된 값을 곱하기 때문에 5의 개수보다 2의 개수가 많을 것이다. 예를 들어 8!은 8x7x6x5x4x3x2x1이고 소인수분해를 해 보면 5는 1개, 2는 6개이다. 따라서 문제에서 요구하는 0의 개수는 주어진 수에서 포함된 5의 개수와 똑같다는 것이다. 5의 개수는 5로 계속 나누면 구할 수 있다. package boj; import java.util.*; import java.io.*; pub..
스택을 사용하는 문제이다. 간단히 정리해서 승환이 앞에 5명이 있다면 1번부터 차례대로 간식을 받을 수 있고 자기 순서가 아니라면 스택에서 대기하면 된다. 입출력 예시다. package boj; 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)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringBuilder sb = new ..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int count = 0; while (N > 0) { if (N % 5 == 0) { count += N / 5; N = 0; } else { N -= 3; count++; } } if (N < ..