[java] 백준 10870번 피보나치 수 5
알고리즘/백준2021. 8. 5. 23:35[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.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

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

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

[java] 백준 2355번 시그마
알고리즘/백준2021. 8. 4. 16:45[java] 백준 2355번 시그마

전에는 쉬운 알고리즘 문제 풀면서 시간제한이 1~2 초거나 범위가 꽤 크지 않았다. 하지만 이제는 점차 시간제한도 있고 범위가 상당하다... 처음에 접근한 방식이다. 범위가 int 형이어서 int형을 써보았지만 StackOverflow... Long을 써봤는데도 StackOverflow... 검색해보니 재귀를 많이 돌리면 stackoverflow가 난다고 했다. 아래의 소스는 재귀로 돌렸을 때 결과는 잘 나오지만 백준에 냈을 때 stackoverflow가 나온 결과 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long A = sc..

[java] 백준 5586번 JOI와 IOI
알고리즘/백준2021. 8. 2. 12:59[java] 백준 5586번 JOI와 IOI

예제 입력 2 같은 경우 겹쳐서 보면 JOI가 1번 IOI가 3번 나온 것을 알 수 있다. 예제 입력3 도 마찬가지로 JOI가 2번 IOI가 3번 나온 것을 알 수 있다. 내가 생각한 방법은 이렇다. String으로 문자열을 입력받고 charAt()으로 JOI와 IOI가 있는지 확인해 count를 세는 것이다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); int count1=0, count2=0; // 배열크기를 벗어나기 때문에 -2를 해줌 // 현재의 문자와 그 다음 첫번째 문자 두번째 문..

[java] 백준 1427번 소트인사이드
알고리즘/백준2021. 8. 1. 15:30[java] 백준 1427번 소트인사이드

이 문제를 보기 전 아래의 문제를 보면 오름차순으로 정렬하였을 때는 Arrays.sort()를 써주었으면 되었는데 이번 문제는 내림차순이다. [java] 백준 2750번 수 정렬하기 문제의 핵심은 오름차순으로 정렬하는 것이다. 이 문장을 보자마자 Arrays.sort()라는 메소드를 이용하면 쉽게 풀 수 있을 것 같아 바로 적용하였다. 기본적으로 오름차순 정렬이기 때문에 간단하 begin-dev-awos.tistory.com 물론 Collections.sort를 이용하여 내림차순 정렬을 할 수 있긴 하겠지만... 보아하니 방법이 어려워 보여서 간단한 방법으로 풀어보았다. import java.util.Scanner; public class Main { public static void main(Strin..

[java] 백준 5086번 배수와 약수
알고리즘/백준2021. 7. 31. 22:19[java] 백준 5086번 배수와 약수

약수와 배수의 공통점은 나누었을 때 딱 나누어 떨어진다는 점이다. 그래서 두 수의 대소 비교만 해주면 약수와 배수를 구할 수 있을 것이라고 판단하여 아래와 같이 코드를 짰다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { int a = sc.nextInt(); int b = sc.nextInt(); if (a == 0 && b == 0) { break; } if (a b && a % b =..

[java] 백준 2750번 수 정렬하기
알고리즘/백준2021. 7. 30. 23:30[java] 백준 2750번 수 정렬하기

문제의 핵심은 오름차순으로 정렬하는 것이다. 이 문장을 보자마자 Arrays.sort()라는 메소드를 이용하면 쉽게 풀 수 있을 것 같아 바로 적용하였다. 기본적으로 오름차순 정렬이기 때문에 간단하게 한줄 써주면 된다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; for(int i=0; i

[java] 백준 2455번 지능형 기차
알고리즘/백준2021. 7. 29. 12:50[java] 백준 2455번 지능형 기차

여기서 가장 중요한 점은 '기차에 사람이 가장 많을 때의 사람 수를 계산' 하는 것이다. 아래의 코드를 보면 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int max = -1, tot=0; for(int i=0; i

[java] 백준 1292번 쉽게 푸는 문제
알고리즘/백준2021. 7. 28. 12:15[java] 백준 1292번 쉽게 푸는 문제

예제 입력 1에 보면 3, 7을 입력으로 받아서 15가 출력되었는데 그 과정을 설명해보자면 1+2+2+3+3+3+4+4+4+4+5+5+5+5+5 ~~~ + 1000이라고 생각해보았을 때 3번째부터 7번째 수까지 합을 보면 2+3+3+3+4 = 15가 된다. 즉, 내가 생각한 방법은 값을 다 채워 놓고 그 이후에 값을 받아서 A번째부터 B번째까지 값을 뽑아내면 되겠다 싶어 아래와 같이 구현하였다. 배열을 1001로 뽑은 이유는 입력에 보면 (1 ≤ A ≤ B ≤ 1,000) 이기 때문에 배열에 담아봤자 1001개를 넘지 못할 거라고 생각해서이다. 이중 for문을 통해서 1+2+2+3+3+3 ~~ 이런 식으로 만들어주었고 배열은 총 1001개이지만... 반례인 A=1, B=1000이라고 생각했을 때 배열의 ..

[java] 백준 10773번 제로
알고리즘/백준2021. 7. 27. 12:31[java] 백준 10773번 제로

해당 문제 같은 경우 Stack 클래스를 사용하면 쉽게 풀 수 있다. Stack은 LIFO구조로 나중에 들어온 값이 먼저 나간다. 힌트에서 볼 수 있는 결과와 같다. push메소드와 pop메소드로 값을 넣고 뺄 수 있다. import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Stack stack = new Stack(); int K = sc.nextInt(); int tot =0; for(int i=0; i

image