일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테준비
- 백준 1000번 java
- 백준
- 자바
- 프렌즈4블록java
- 카카오코딩테스트
- Java heap
- 프렌즈4블록
- 카카오1차
- 카카오코테
- heap정렬
- 객체프로그래밍이란
- 알고리즘
- heap
- 문자열포맷
- 카카오기출
- 개발상식
- 객체프로그래밍
- 힙정렬자바
- 백준 1000번
- 자바문자열
- 프로그래머스
- java method
- 백준 1924번
- 백준 1924번 java
- 공부정리
- 코딩테스트기출
- 자료구조 트리
- java
- 자료구조힙
- Today
- Total
목록CS (65)
일단 시작해보는 블로그
처음에 그냥 리스트에 넣고 정렬을 해줘서인지,,,,,, 시간초과가 났었던 문제. 정렬 시, 아주 빠른 속도를 보이는 우선순위큐를 이용해야했다. 시간복잡도 : O(logN) import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 보석 개수 int K = sc.nextInt(); // 1개의 보석만을 담을 수 있는 가방 Node[] jewelry = new Node[N]; // 보석의 정보를 담고 있는 Node 배열 int[] max = new int[K]; // 보석관련 정보를 N만큼 입력받는다. for(int..
순열이란? 수학적으로는 완전순열이라고 하는데, 쉽게 말해서 모든 원소의 위치를 바꿔서 주어진 수 배열을 나열할 수 있는 경우의 수를 모두 표현한 것이다. 예를들어, {1, 2, 3} 이라면 {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1}가 해당된다. 순열의 구현 첫번째로 생각해봐야하는 것은 해당 순열의 다음순열 구하기이다. 그래야 loop문으로 모든 순열을 구현할 수 있기 때문! [순열의 다음순열 구하기] {1 2 3 4 5 6 7}로 이루어진 순열을 사전순으로 나열했을 때, 마지막에 올 수 있는 것은 {7 6 5 4 3 2 1}일 것이다. 앞의 자리가 3이면서 마지막에 올 수 있는 것은 ? {3 7 6 5 4 2 1} 앞의 자리가 4 ..
부분집합이란? 예를 들어, 집합 A = {a, b, c, d}가 있다고 하면, A의 부분집합인 B는 {}, {a}, {b}, ... {a,b}, ... {a, b, c}, ... {a,b,c,d}, 16(2^4)가지수로 표현될 수 있다. 비트마스크 연산을 이용한 부분집합의 프로그램으로의 구현 부분집합은 집합에서 각각 원소가 있다(1) 혹은 없다(0)의 경우의 수로 볼 수 있는데, 이러한 경우로 보면 '비트마스크 연산'을 이용해 표현할 수 있다. 구현과정을 두가지로 나눌 수 있다. 1. 부분집합을 이진수로 표현하기 2. 각각 이진수를 부분집합으로 변환해서 출력하기. (1이면 해당 원소 출력, 0이면 continue;) 1. 각 원소를 이진수로 표현 다음은 집합 A = {a, b, c, d}의 부분집합을 이..
이진 검색 트리 (Binary Search Tree) 임의의 이진검색트리의 노드 N은 다음 조건을 만족한다. - 노드 N의 왼쪽 서브 트리의 모든 키 값은 N보다 작다. - 노드 N의 오른쪽 서브 트리의 모든 키 값은 N보다 작다. - 같은 키 값을 갖는 노드는 없다. 이때, 이진검색트리를 중위순회(Inorder)하면 다음과 같이 키 값의 오름차순으로 노드를 얻을 수 있다. 1 - 4 - 5 - 6 - 7 - 9 - 11 - 12 - 13 - 14 - 15 - 18 이렇게 중위 순회를 하면 키 값을 오름차순으로 노드를 얻을 수 있다는 점과 구조가 단순하다는 점, 이진 검색과 비슷한 방식으로 검색이 가능하다는 점, 노드의 삽입이 쉽다는 점 등의 특징이 있어 폭넓게 사용된다. 이진검색트리 구현 package..
문제 요약 숫자(0-9), '+', '-' 버튼으로 이루어진 리모컨으로 원하는 채널로 이동 하고 싶다. 단, 숫자 누르는 버튼(0-9) 중, 고장난 버튼이 주어진다. input 값 : N, M, 고장난 숫자 버튼 output 값 : 버튼(숫자, +, - 버튼)을 총 몇번 눌러야하는지. 100번 -> N 현재 채널 : 100번 이동하려고 하는 채널 : N 고장난 숫자 버튼의 수 : M 고장난 숫자 버튼 : B1, B2, .... , Bn (M개) 해결 전략 1. 고장나지 않은 버튼을 이용해 숫자로 이동할 수 있는 채널(c)을 구한다. c를 구하면 길이를 반환하면 된다 -> 'len' -> 0-500000까지 for-loop로 하나씩 맞는지 확인한다. 2. 이동할 채널(C)와 원래 이동하려고 했던 채널(n)..
프로그래머스용 코드 import java.util.*; class Solution { static class Node{ int index; double value; Node(int index, double value){ this.index = index; this.value = value; } int printIndex(){ return this.index; } double printValue(){ return this.value; } } public int[] solution(int N, int[] stages) { int[] answer = new int[N]; int[] challenge = new int[N+1]; int[] numOfFailure = new int[N+1]; for(int i=0..
하,......................... 진짜 겨우풀었다. 아니 너무 복잡했어 ㅠㅠ 눈물나ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ흑흑흑.............................................. 운동이나하러가야지.............................................. 프로그래머스용 코드 import java.util.*; class Solution { static int[] crewTimeTable = null; static int[] busTimeTable = null; //stringToMinute()는 역할이 비슷하므로, overloading 해줬음. //String으로 된 크루들의 도착 시간표를 분으로 나타낸 int[] crewTimeTable..
코드 설명 변수/객체 boardC : 입력받은 배열 board를 char배열로 잘라서 char[][] 에 넣음 marked : 한번 루프를 돌 때, 2x2블록이 완성되면 true. 완성된 블록의 개수를 셀 때도 사용됌. finalFlag : 더 이상 2x2블록이 없을 때, finalFlag는 false가 되어 최종 루프를 빠져나가기 위해 사용됌. 메서드 (-> 메서드에 m, n을 넣은 이유는 전역변수로 선언을 하기 번거롭기 때문.) 1 .checkBlock(int m, int n) 2x2가 있는 블록을 체크하고 블록이 완성되면 해당하는 인덱스에 marked[i][j] = true로 표시. 2. processBlock(int m, int n) - > int로 반환 marked값을 보고 true인 것은 제거..