일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- TabLayout and ViewPager
- overridePendingTraction
- BottomNavigationViewEx
- FragmentPagerAdapter
- 목표한번이뤄보자
- 운동
- Android Universal Image Loader
- 개발
- 재태크
- FrameLayout
- 2020년 목표
- FragmentSatePagerAdapter
- 독서
- Today
- Total
목록알고리즘 스터디 (종료)/(문제) BOJ (12)
seops
1. 코드 import java.awt.Point; import java.util.ArrayList; import java.util.Scanner; public class P1987 { static int r, c; static char[][] map; static int[][] calMap; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, 1, 0, -1}; static int max; // A = 65, Z = 90 (90-65+1=26) public static void main(String[] args) { Scanner scan = new Scanner(System.in); r = scan.nextInt(); c = scan.nextInt(); ..
1. 참고 자료 1) (블로그) https://jm25.tistory.com/30 2) (블로그) https://jaimemin.tistory.com/674 2. 코드- 사이클의 생성 여부를 확인하는 배열로 이용 - 실질적인 의미는 '더 이상 해당 노드를 방문할 이유가 있는지?' (boolean - isFinished) import java.util.ArrayList; import java.util.Scanner; public class p9466 { static ArrayList[] studentPair; static boolean[] visited; static boolean[] isFinished; static int count = 0; public static void main(String[] a..
문제 링크(Click) : https://www.acmicpc.net/problem/2004 1. 문제 접근 문제는 다음과 같습니다. " nCm의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오. " " 단, 첫째 줄에 정수 n, m(0
문제 링크(Click) : https://www.acmicpc.net/problem/11053 1. 문제 접근1) 문제가 반복되는지? 즉, 재귀/DP 문제인지 파악합니다. 먼저, 문제에서 주어진 예시를 통해서 문제의 요구사항을 파악해 보겠습니다. " 수열 A = {10, 20, 10, 30, 20, 50}에서 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성해라 " 문제에서 직접적으로 명시된 조건은 따로 없지만, 가장 길면서 증가하는 부분 수열을 구하는 것이 저희 목표입니다. 저는 이러한 DP 문제에 접근할 때, 오른쪽 끝에서부터 생각을 하는 습관이 도움이 된다고 생각합니다. 이렇게 오른쪽 끝에서부터 생각하기 위해서는 문제의 답에는 영향을 주지 않는 하에서, 문제의 조건을 살짝 변형시켜줘야 합니다. ..
문제 링크(Click) : https://www.acmicpc.net/problem/2156 1. 문제 접근1) 문제가 반복되는지? 즉, 재귀/DP 문제인지 파악합니다. 개인적으로 '알고리즘 기초'에 있는 DP 문제들 중에서 2번째로 어려웠던 문제입니다. 먼저, 문제에서 주어진 예시를 통해서 문제의 요구사항을 파악해 보겠습니다. " 효주가 가장 많은 포도주를 마실 수 있도록 하는 프로그램을 작성해라 " " 단, 포도주 잔을 선택하면 그 잔에 들어있는 포두주를 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. " " 단, 연속으로 놓여 있는 3잔을 마실 수는 없다. " 저는 이러한 DP 문제에 접근할 때, 끝에서부터 생각을 하는 습관이 도움이 된다고 생각합니다. 따라서 아래의 그림으로 표현할..
문제 링크(Click) : https://www.acmicpc.net/problem/2193 1. 문제 접근1) 문제가 반복되는지? 즉, 재귀/DP 문제인지 파악합니다. 먼저, 문제에서 주어진 예시를 통해서 문제의 요구사항을 파악해 보겠습니다. " 0과 1로만 이루어진 수를 이진수라 하는데, 이러한 이진 수 중 특별한 성질을 갖는 것들을 이친수(prinary number)라 한다. " " 1. 이친수는 0으로 시작하지 않는다. " " 2. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. " (이 문제는 쉬운 계단수_10844 문제와 동일한 방법으로 접근하면 됩니다.) 저는 이러한 DP 문제에 접근할 때, 끝에서부터 생각을 하는 습관이 도움이 된다고 생각합니다...
문제 링크(Click) : https://www.acmicpc.net/problem/10844 1. 문제 접근1) 문제가 반복되는지? 즉, 재귀/DP 문제인지 파악합니다. 먼저, 문제에서 주어진 예시를 통해서 문제의 요구사항을 파악해 보겠습니다. " 45656과 같이, 인접한 모든 자리수의 차이가 1이 나는 수를 계단 수라고 한다. 길이가 N (1
문제 링크(Click) : https://www.acmicpc.net/problem/11052 1. 문제 접근 1) 문제가 반복되는지? 즉, 재귀/DP 문제인지 파악합니다. 먼저, 문제에서 주어진 예시를 통해서 흐름을 파악해 보겠습니다. " 붕어빵이 4개 남아 있고, 1개 팔 때의 가격이 1, 2개는 5, 3개는 6, 4개는 7인 경우에 해빈이가 얻을 수 있는 회대 수익은 10원이다. 2개, 2개로 붕어빵을 팔면 되기 때문이다. " 위 그림과 같이 총 4개의 붕어빵에서 1개 / 2개 / 3개 / 4개 를 살 경우로 나누어서 그려보면, 반복되는 패턴을 확인할 수 있습니다. 2) 종료 조건을 파악합니다. 아래 그림에서 노란색으로 색칠된 부분을 확인해보겠습니다. 기존의 총 4개였던 붕어빵에서 3개를 사고, 1..
문제 링크 : https://www.acmicpc.net/problem/1463 1. 문제에 대한 접근(다이나믹프로그래밍(DP) 문제의 가장 기본 문제인데... 오랜만에 다시 풀려고 하니 안풀린다...)먼저 앞서 자료구조(재귀함수)에서 설명했던 대로, 순서에 맞게 진행해 보겠습니다. 1) 문제 내에서, 반복되는 점이 있는지?(즉, DP 문제인지?)를 파악합니다. - 재귀의 파악 2) 종료 조건을 파악합니다. - 종료 조건의 파악 - 숫자 n을 1로 만드는 문제이므로, n의 값이 1이 되었을 때, 종료됩니다. - 여기서 조심해야 할 것은, 문제에서 요구되는 결과 값이 1로 만들 때까지의 '최소 연산 횟수'를 구하는 것이므로 0을 return (연산 횟수를 구할 경우, 연산이 진행될 때마다 +1을 해주면됩니..
문제 링크 : https://www.acmicpc.net/problem/1158 1. 문제에 대한 접근1) Queue 자료구조를 이용해 접근 - 큐 자료구조의 선입 선출(FIFO) 성질을 이용해, 해당 번째가 아닌 경우, poll한 값을 다시 queue에 넣어준다. import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class p1158 { public static void main(String[] args) {Scanner scan = new Scanner(System.in);Queue queue = new LinkedList();StringBuilder sb = new StringBuilder();int..