Algorithm

https://www.acmicpc.net/problem/2504 이 문제는 스택으로 푸는데 java.util에서 제공하는 Stack을 사용할 것이다.참고로 java.util에서 제공하는 Stack은 thread-safe하다.이유는 Stack의 내부 구조를 보면 모든 메서드에 `synchronized`가 붙어 있기 때문이다. Answerimport java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.util.Stack;public class Main { public static void main(String[] args) { String brackets = ""; ..
https://www.acmicpc.net/problem/2581 문제를 풀기 앞서,소수는 1과 자기 자신만을 약수로 가져야 한다.이전에 풀었던 소수 문제는 숫자 하나에 대해서 그 숫자가 소수인지를 판별했지만이 문제는 여러 소수를 찾는 문제이다. 여러 소수를 찾을 때는 에라토스테네스의 체(Sieve of Eratosthenes) 알고리즘을 사용하면 편하다.에라토스테네스의 체는 주어진 한계까지 모든 소수를 찾는 고대 알고리즘이다.이 방법으로 주어진 정수 N 보다 작거나 같은 모든 소수를 찾으려면2로 시작하여 2의 배수를 제외시킨다.3으로 시작하여 3의 배수를 제외시킨다. (이때 2의 배수는 통과한다.)위와 같은 방식으로 주어진 정수 N의 제곱근까지 반복한다.소수는 1과 자기 자신으로만 나눠져야 한다. 즉,..
https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.www.acmicpc.net 이 문제는 배열을 사용하지 않고 풀 수 있을 것 같아서 풀고 보니 2중 for문에 break를 같은 조건으로 두 번 호출하게 됐다.break를 같은 조건으로 두 번 호출하는 거 자체도 싫고, 개인적으로 가능하면 2중 for문 보다 for문 1개만 사용하는 거를 선호해서 아래와 같이 풀게 되었다.배열을 사용하면 배열에 삽입한 후 조회를 해야 해서 2번 사용하게 되다 보니 한 번만 사용해도 되는 방법으로 풀고 싶었다. Answ..
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.www.acmicpc.net 문제를 풀기 앞서,소수는 1과 자기 자신만을 약수로 가져야 한다.즉, 1과 자기 자신을 제외한 숫자를 해당 숫자에 나눠서 나온 나머지가 0이 있다면 그 수는 소수가 아니다.따라서 소수를 구하기 위해 2부터 해당 숫자 전까지의 수를 하나씩 해당 수에 나누면서 구하려고 했다. 예를 들어, 7이라는 수가 주어졌다.소수 계산결과7 % 2 = 1약수X7 % 3 = 1약수X7 % 4 = 1약수X7 % 5 = 1약수X7 % 6 = 1약수X위 표처럼 1과 자기 자신을 제외한 모든 수..
https://www.acmicpc.net/problem/2693 2693번: N번째 큰 수첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000www.acmicpc.net Answerimport java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.util.StringTokenizer;import java.util.Arrays;public class Main { public static void main(String[] ar..
https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.www.acmicpc.net 문제를 풀기 앞서, 유클리드 호제법으로 구하는 방법은 그동안 알던 최대공약수, 최소공배수 방법과는 조금 다르다. - 최대공약수숫자 A, B가 있다면 두 수를 나누어서 나온 나머지가 R이라고 해보자.이때 R이 0이면 B가 최대공약수가 된다.만약 R이 0이 아니라면 A에 B를 대입하고, B에 R을 대입해서 두 수를 다시 나누는 방법을 R이 0일 될 때까지 반복한다. 100, 46을 예로 들어보자.ABresult (R)100..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.www.acmicpc.net  Answer 1import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.util.Arrays;public class Main { public static void main(String[] args) { final int DWARF_..
https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 우선 피보나치란 수는 0과 1로 시작하여 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열로 수식은 Fn = Fn-1 + Fn-2 (n ≥ 2)이다. 이 수열은 for문 또는 재귀함수로 푸는 2가지 방법이 있다. Answer 1 import java.io.InputStreamReader; import java.io.BufferedReader; import j..
https://www.acmicpc.net/problem/2460 2460번: 지능형 기차 2 최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. www.acmicpc.net Answer import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { final int STATION_MAX = 1..
https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net Answer 1 import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { int mi..
Yn3(인삼)
'Algorithm' 태그의 글 목록