일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 1924번
- 힙정렬자바
- 자바
- Java heap
- 코테준비
- 카카오기출
- java method
- 객체프로그래밍이란
- 알고리즘
- heap
- 프렌즈4블록
- 자료구조힙
- 프로그래머스
- 백준 1924번 java
- 개발상식
- 백준
- 프렌즈4블록java
- 카카오코테
- heap정렬
- 자바문자열
- 문자열포맷
- 객체프로그래밍
- 카카오1차
- java
- 자료구조 트리
- 백준 1000번
- 코딩테스트기출
- 카카오코딩테스트
- 공부정리
- 백준 1000번 java
- Today
- Total
목록2019/09 (20)
일단 시작해보는 블로그
import java.util.*; class Solution { static Set combinationList = new HashSet(); // 소수 판별하기 boolean public static boolean isPrimeNumber(int N){ // 소수는 2부터 시작한다. //System.out.println(N); if(N
DFS, 재귀 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 지도의 크기를 담은 int 배열 // 지도는 n x n 이다. int n = sc.nextInt(); sc.nextLine(); // nextInt() 즉, 정수를 입력 받은 후, nextLine()을 써줘야한다. // 지도 상, 단지가 있으면 1, 없으면 0 int[][] dangi = new int[n][n]; // 방문했는지 체크하는 배열 // 방문했으면 true, 아직 방문 안했거나 못할 조건이면 false boolean[][] visited = new boolean[n..
달팽이 모양으로 출력 import java.util.Scanner; // 배열 달팽이 알고리즘 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] A = new int[n][n]; // Filling data. int K = 1, f = 0; while(K
문제 자연수 n(n>=2)을 입력받으면, 0도 회전, 시계방향 90도, 반시계방향 90도, 위아래 반전, 좌우 반전 출력하기. 코드 package arrayAlgorithm; import java.util.Scanner; public class Array_Rotate { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] A = new int[n][n]; // Filling data. int K = 1; for(int i=0; i
점화식을 구해서 적용했다. 생각 흐름 5 X 5 행렬이 있다고 보면, 데이터가 존재하는 인덱스대로 다음과 같이 처리할 수 있다. -> 점화식을 만들 때, 대칭인 것(예를 들어, 1 3 5 3 1)을 for문으로 처리하는 방식은 대칭의 중심이 되는 것을 0으로 만들고 실제로 for문안에서 출력할 때 절댓값(java에서는 Math.abs(...))로 사용하면 된다. 코드 package ArrayAlgorithm; import java.util.Scanner; public class Array_Diamond { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 5x5배열 int[..
DP가 아닌 Greedy를 떠올려야 하는 이유 Ai는 Ai-1의 배수이므로, 모든 경우의 수를 전부 다 해보는 dp로 한다면, 비효율적이다. 따라서 그리디로 구현해야한다. 코드 package greedy; import java.util.Scanner; // 문제 : 동전 0 // 예제1 : 동전 10(N)종류로 4200(K)원을 만들 때, 동전개수의 최솟값구하기 public class backjoon_11047 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 1. 입력 int N = sc.nextInt(); // N : 동전종류의 수 int K = sc.nextInt(); // K : 동전의 합 //동전의..
** dp문제라고 판단했을 때, 가장 먼저 해야하는 것 : 메모이제이션을 위한 배열 d 정의하기. ** d[i] 정의 i계단까지 왔을 때 문제에 만족하는 조건에 만족하며, 얻을 수 있는 최대 점수. 문제에 만족하는 조건 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 한 계단 전에서 왔다면 그 이전에는 두 계단 이전에서 왔어야한다. 마지막 도착 계단은 반드시 밟아야 한다. -> d[N]을 구하면 된다. 경우의 수 생각해보기 i의 입장에서 생각해 봤을 때 다음과 같다. 1. i-1을 밟고 온 경우 d[i] = d[i-3] + ..
스티커는 2행 n열로 주어진다. 하나를 떼면 왼쪽, 오른쪽, 위, 아래를 연속으로 뗄 수 없다. 따라서 왼쪽부터 오른쪽으로 스티커를 뗄 수 있으면서 그 값이 최댓값인 것을 경우의 수 중에서 고를 것이다. 생각 각각 열마다 3가지 경우의 수를 둘 것이기 때문에 이렇게 할당했다. int[][] d = new int[n+1][3]; d[i][0] = i열에서 하나도 안뗐을 때, 그전부터 이 상황((k=1; k '그 전부터 이 상황까지'의 부분이 dp가 적용되어야할 부분. d[i][1] = i열에서 위에꺼만 뗐을 때, 그전부터 이 상황까지 더한 값. d[i][2] = i열에서 아래꺼만 뗐을 때, 그전부터 이 상황까지 더한 값. -> 결국 마지막 열에서 d[n][0], d[n][1], d[n][2]의 최댓값을 구..