boj 썸네일형 리스트형 [Algorithm/Java][백준] 2775번 부녀회장이 될테야 [BOJ] 2775번 부녀회장이 될테야 https://www.acmicpc.net/problem/2775 문제 접근 백준에서 에제로 준 입력과 출력을 하나씩 쓰다보면 규칙이 보이게 된다. 000 -> 0 001 -> 1 002 -> 2 003 -> 3 100 -> 0 101 -> 1 102 -> 3 103 -> 6 200 -> 0 201 -> 1 202 -> 4 203 -> 10 이때 103호에는 003호와 102호를 합친 값이 있고, 203호에는 103호와 202호를 합친 값이 있다. 이를 점화식으로 바꿔보면 (k0n)호 = k-10n호 + k0n-1호 코드로 바꿔보면 dp[floor][room] = dp[foor-1][n] + dp[floor][n-1]이 된다. 이를 코드로 바꾸면 다음과 같다. Co.. 더보기 [Algorithm/Java][백준] 1676번 팩토리얼 0의 개수 [백준] 1676번 팩토리얼 0의 개수 https://www.acmicpc.net/problem/1676 문제접근 처음에는 그냥 팩토리얼 재귀 함수를 이용해서 단순하게 0의 개수를 셀려고 했다. 근데 입력의 범위가 500까지 였고 500!는 long으로도 커버가 되지 않는 범위였다. 그래서 검색을 해본 결과!@! 맨 뒤에서 연속되는 0의 개수를 센다는 것은 2 * 5 의 갯수가 몇개가 있는지와 같다!!라는 엄청난 사실을 알게 되어서 이를 코드로 구현하였다....대박... Code import java.util.Scanner; public class BOJ1676 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); .. 더보기 [Algorithm/Java][백준] 2805번 나무 자르기 [백준] 2805번 나무 자르기 https://www.acmicpc.net/problem/2805 문제접근 처음에는 감이 안잡혀서 밑에 알고리즘 분류가 이분 탐색이라고 써져있어서, 옛날에 배운 기억으로 코드를 작성했다. left, right, mid를 이용해서 값을 찾았다. 만약 딱 떨어지는 값이 없을 경우, 적어도 m을 넘겨야하기 때문에 right값을 return하도록 했다. Code import java.util.Arrays; import java.util.Scanner; public class BOJ2805 { static int cutHeight(int[] trees, int m){ Arrays.sort(trees); int left = 0; int right = trees[trees.length.. 더보기 [Algorithm/Java][BOJ] 3052번 나머지 [백준] 백준 3052번 나머지 https://www.acmicpc.net/problem/3052 문제접근 10개의 입력들을 42로 나누어서 서로 다른 나머지 값들이 몇 개가 있는지 출력하는 문제였다. 서로 다른 값이라는 키워드를 보고 Set 자료구조를 사용하면 되겠다고 생각이 들었다. Set은 데이터의 중복을 제거해주기 때문에 따로 중복 검사를 하지않고 나머지를 add 해주고 Set의 크기만 출력하면 되는 문제이다. Code import java.util.Scanner; import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet hs = new HashSet(10); Scanner sc = n.. 더보기 [Algorithm/Java][BOJ] 백준 2908번 상수 [백준] 2908번 상수 https://www.acmicpc.net/problem/2908 문제접근 문자열을 뒤집는 문제이므로 StringBuilder의 reverse() 함수를 이용하기로 했고, 입력이 세자리 수 두개이기 때문에 BufferedReader를 쓰지않고 그냥 Scanner를 사용하여 입력을 받았다. Code import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(" "); int max = -1; for(String num: input){ StringBuilder.. 더보기 [Algorithm/Java][BOJ] 1439번 뒤집기 [BOJ] 1439번 뒤집기 https://www.acmicpc.net/problem/1439 문제접근 0이 같이 있는 그룹과 1이 같이 있는 그룹이 몇 그룹인지 세면 된다고 생각해서 처음에는 0에서 1로 바뀌는 부분에서 cnt에 +1을 해준다고 생각했다. 이렇게 하면 모든 그룹을 다 세기 때문에 오답이 되었다. 그래서 zeroGroup과 oneGroup을 이용해서 각자 따로따로 하나씩 세서 더 작은 값을 출력해 주었다. 하지만 마지막 부분에 있는 그룹은 처음 로직으로는 카운트가 안되서 for문 마지막일 때 현재 cur값의 group에 +1을 해주었다. Code import java.util.Scanner; public class Main { public static void main(String[] a.. 더보기 이전 1 다음