문제는 쉬워 보일 수 있다. 하지만 입력에서 각 이진수의 길이는 80을 넘지 않는다. 즉, 79자리인 입력이 들어올 경우 웬만한 자료형들은 범위를 벗어나 NumberFormat과 같은 런타임 에러가 발생할 수 있다. 여기서 써야할 클래스는 BigInteger 클래스, int, long, String으로 해보았지만 되는 것은 없었고 결론은 BigInteger 클래스였다. 나의 풀이 방법은 이렇다. 무한한 수를 담을 수 있는 BigInteger 클래스로 값을 담아서 문자열로 바꿔 준 후 문자열(2진수)을 다시 10진수로 변환시키기 위해서 BigInteger 클래스에 담아준다. 그리고 BigInteger의 add 메소드를 통해 10진수로 변환한 a와 b의 가산을 해주고 toString() 메소드로 다시 2진수..
기존에 피보나치 수 2(2748번) 문제를 보게 되면 범위가 90인데도 long형의 범위에 들어섰었는데 [java] 백준 2748번 피보나치 수 2 먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [java] 백준 2747번 피보나치 수 문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 begin-dev-awos.tistory.com 이 문제는 무려 입력이 10000이다. 하지만 쫄 필요는 없다. java에서 지원하는 그 이상의 숫자를 나타내줄 수 있는 BigInteger 클래스가 존재하기 때문에 활용을 하면 된다. 풀이는 2748번과 같으므로 생략하겠다. import java.math.BigInteger; import java.util..
먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [java] 백준 2747번 피보나치 수 문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 출력은 같다. 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scann.." data-og-host="begin-dev-awos... begin-dev-awos.tistory.com 피보나치 수(2747번) 문제와 동일하기 때문에 코드에 대한 설명은 하지않고 어떤 점이 달라지는지를 설명하도록 하겠다. 간단하게 2747번 문제라고 하겠다. 2747번 문제 같은 경우 int형의 범위 안에서 결과값이 나올 수 있었는데... 이번 문제 같..
문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 출력은 같다. [java] 백준 10870번 피보나치 수 5 문제를 요약하자면 0번째 0, 1번째 1, 2번째부터는 0번째 값과 첫 번째 값의 합이라는 것이다. F(2) = F(0) + F(1) -> 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scann.. begin-dev-awos.tistory.com 이 문제와 위의 문제의 차이점은 n의 범위다. 10870번 문제에서 n은 20이었고, 이번 2747번 문제에서는 n은 45이다. 또한 티어의 차이도 있는데 약간 애매하다... 10870 티어가 좀 더 높은데 난 뒤바꼈다고 생각한다. 10870문제에서 쓰던 소스를 복..
문제 내용을 요약하자면 대회의 9문제의 배점이 100점, 100점, 200점, 200점, 300점, 300점, 400점, 400점, 500점 이라고 한다. 그리고 받은 점수의 합계가 100점 이상이라면 커피를 받을 수 있다. 근데 점수를 조작하는 사람들이 있는데 문제의 배점을 초과하여 점수를 받는다면 hacker로 간주 출력에서 커피 추첨 대상자가 아니라면 none을 출력하고, 해커라면 hacker를 출력한다. 그 외의 경우에는 draw를 출력한다. 라고 되어있으니 그에 맞게 if문으로 조건 걸어주면 쉽게 풀 수 있다. 9문제의 배점을 배열로 만들어 점수를 입력받을 때 문제의 배점을 입력받은 점수가 초과하게 되면 hacker, 100점 미만이면 none, 그 외라면 draw 로 처리해주면 된다. impo..
문제 내용이 뭔가 긴데... 그냥 요약해주자면... 입력을 홀수 홀수 짝수 입력받았을 때 홀수 X 홀수 해주면 되고 홀수 홀수 홀수 입력 받았을 때 홀수 X 홀수 X 홀수 해주면 된다. 짝수 짝수 짝수 입력 받았을 때 짝수 X 짝수 X 짝수 해주면 된다. 다시 한번 예를 들어주자면 짝수 짝수 홀수가 나왔을 때 1 X 홀수가 된다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = new int[3]; int tot = 1; for (int i = 0; i < 3; i++) { arr[i] = sc.nextInt()..
문제를 요약하자면 0번째 0, 1번째 1, 2번째부터는 0번째 값과 첫 번째 값의 합이라는 것이다. F(2) = F(0) + F(1) -> 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scanner; class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n_th= sc.nextInt(); System.out.println(pibo(n_th)); } static int pibo(int n){ if(n
문제에서 T(n)은 1부터 n까지의 합, T(4) = 1+2+3+4, 즉 T(4) = 10 W(n) = Sum[k=1..n; k*T(k+1)] 좀 쉽게 풀어서 쓰자면 W(4)일 때 식은 이렇게 나온다. W(4) = 1*T(2) + 2*T(3) + 3*T(4) + 4*T(5) T를 좀더 쉽게 풀어쓰면 W(4) = 1*(1+2) + 2*(1+2+3) + 3*(1+2+3+4) + 4*(1+2+3+4+5) W(4) = 3 + 12 + 30 + 60 = W(4) = 105가 된다. 처음에 문제를 봤을 때 이게 뭔 소린가 싶었다. 필자는 공부에 뜻이 없어 전과목을 포기했다... ㅋㅋㅋ 오로지 게임에만... 이 문제의 공식도 어제 풀었던 시그마 문제랑 식이 비슷하다. [java] 백준 2355번 시그마 전에는 쉬운 ..