망나니 AWOS의 일상
article thumbnail
[java] 백준 1252번 이진수 덧셈
알고리즘/백준 2021. 8. 8. 20:03

문제는 쉬워 보일 수 있다. 하지만 입력에서 각 이진수의 길이는 80을 넘지 않는다. 즉, 79자리인 입력이 들어올 경우 웬만한 자료형들은 범위를 벗어나 NumberFormat과 같은 런타임 에러가 발생할 수 있다. 여기서 써야할 클래스는 BigInteger 클래스, int, long, String으로 해보았지만 되는 것은 없었고 결론은 BigInteger 클래스였다. 나의 풀이 방법은 이렇다. 무한한 수를 담을 수 있는 BigInteger 클래스로 값을 담아서 문자열로 바꿔 준 후 문자열(2진수)을 다시 10진수로 변환시키기 위해서 BigInteger 클래스에 담아준다. 그리고 BigInteger의 add 메소드를 통해 10진수로 변환한 a와 b의 가산을 해주고 toString() 메소드로 다시 2진수..

article thumbnail
[java] 백준 10826번 피보나치 수 4
알고리즘/백준 2021. 8. 8. 15:21

기존에 피보나치 수 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..

article thumbnail
[java] 백준 2748번 피보나치 수 2
알고리즘/백준 2021. 8. 8. 10:14

먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [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형의 범위 안에서 결과값이 나올 수 있었는데... 이번 문제 같..

article thumbnail
[java] 백준 2747번 피보나치 수
알고리즘/백준 2021. 8. 7. 14:01

문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 출력은 같다. [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문제에서 쓰던 소스를 복..

article thumbnail
[java] 백준 21866번 추첨을 통해 커피를 받자
알고리즘/백준 2021. 8. 7. 09:38

문제 내용을 요약하자면 대회의 9문제의 배점이 100점, 100점, 200점, 200점, 300점, 300점, 400점, 400점, 500점 이라고 한다. 그리고 받은 점수의 합계가 100점 이상이라면 커피를 받을 수 있다. 근데 점수를 조작하는 사람들이 있는데 문제의 배점을 초과하여 점수를 받는다면 hacker로 간주 출력에서 커피 추첨 대상자가 아니라면 none을 출력하고, 해커라면 hacker를 출력한다. 그 외의 경우에는 draw를 출력한다. 라고 되어있으니 그에 맞게 if문으로 조건 걸어주면 쉽게 풀 수 있다. 9문제의 배점을 배열로 만들어 점수를 입력받을 때 문제의 배점을 입력받은 점수가 초과하게 되면 hacker, 100점 미만이면 none, 그 외라면 draw 로 처리해주면 된다. impo..

article thumbnail
[java] 백준 21312번 홀짝 칵테일
알고리즘/백준 2021. 8. 6. 16:08

문제 내용이 뭔가 긴데... 그냥 요약해주자면... 입력을 홀수 홀수 짝수 입력받았을 때 홀수 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()..

article thumbnail
[java] 백준 10870번 피보나치 수 5
알고리즘/백준 2021. 8. 5. 23:35

문제를 요약하자면 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

article thumbnail
[java] 백준 2721번 삼각수의 합
알고리즘/백준 2021. 8. 5. 17:51

문제에서 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번 시그마 전에는 쉬운 ..