개발/백준알고리즘
1920번_수 찾기_java
● 문제 https://www.acmicpc.net/problem/1920 ● 풀이 처음에는 boolean 배열을 100000 크기로 만들어서(boolean 배열의 default 값은 false) N개 정수의 index에 해당하는 배열 요소의 값을 true로 바꿔주고 M개 정수를 배열의 index로 찾아서 boolean 값이 true이면 1, false이면 0으로 설정하게 개발했다. 그런데 조건에서 정수의 범위가 int의 범위이므로 boolean 배열의 index의 길이를 넘어서므로 실패했고 검색 속도를 올리기 위해 TreeSet을 이용하는 방법으로 변경하였다. ● 소스 package acmicpc; import java.io.BufferedReader; import java.io.BufferedWrit..
11723번_집합_java
● 문제 https://www.acmicpc.net/problem/11723 ● 풀이 공집합 S는 중복을 허용하지 않으므로 SET 자료구조를 이용하면 쉽게 해결할 수 있다. 각 문자열에 따라 동작을 다르게 수행하는 부분은 java7 부터 swtich 문에 비교대상에 문자열을 넣을 수 있다. ● 소스 package acmicpc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashSet; import java.util.Set; public class acmicpc11723 { public..
23972번_악마의 제안_java
● 문제 https://www.acmicpc.net/problem/23972 ● 풀이 민주가 가지고 있어야할 최소 금액 : answer 악마가 제안한 금액 : a 지불하고 남은 금액의 배수 : n 이득을 보려면 가지고 있는 금액에 악마가 제안한 금액을 뺀 금액의 n배에 남은 금액을 뺀 금액이 악마가 제안한 금액보다 크면 된다. (answer - a) * n - (answer - a) >= a (answer - a) (n - 1) >= a answer >= a / (n - 1) + a n = 1일때는 분모가 0이므로 answer가 무한대 ● 소스 package acmicpc; import java.io.BufferedReader; import java.io.BufferedWriter; import java..
15726번_이칙연산_java
● 문제 https://www.acmicpc.net/problem/15726 ● 풀이 a * b / c 와 a / b * c의 값을 비교하면 된다. 답이 int 범위를 넘어가지 않는데 세 개 정수 A, B, C(1 ≤ A, B, C ≤ 1,000,000)는 이므로 중간 결과가 최대 1,000,000 * 1,000,000 가 되어서 int 범위를 넘어갈 수 있다. 그래서 중간 계산은 long으로 계산하기 위해서 long 형을 사용하고 결과 변수는 int 형을 사용했다. ● 소스 package acmicpc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.O..