Skip to content

Instantly share code, notes, and snippets.

View geoseong's full-sized avatar
🏠
Working from home

TaeSeong Park geoseong

🏠
Working from home
View GitHub Profile
@geoseong
geoseong / Main.java
Last active April 19, 2017 15:17
BaekJoon Algorithm Study : 11399_ATM
/*
- 줄을 [2, 5, 1, 4, 3] 순서로 줄을 서면, ( 1, 2, 3, 3, 4 )
2번 사람은 1분만에, 5번 사람은 1+2 = 3분, 1번 사람은 1+2+3 = 6분, 4번 사람은 1+2+3+3 = 9분, 3번 사람은 1+2+3+3+4 = 13분이 걸리게 된다.
각 사람이 돈을 인출하는데 필요한 시간의 합은 1+3+6+9+13 = 32분이다. 이 방법보다 더 필요한 시간의 합을 최소로 만들 수는 없다.
# 입력
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
5
3 1 4 3 2
@geoseong
geoseong / Main.java
Last active April 15, 2017 05:10
BaekJoon Algorithm Study : 11726_Tiling_2xn
/*
# 입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
1. 2
2. 9
# 출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
1. 2
2. 55
@geoseong
geoseong / Main.java
Last active May 26, 2017 16:06
Practice : LinkedList
package codeInterviewQ.linkedlist;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
@geoseong
geoseong / Main.java
Created April 15, 2017 15:58
BaekJoon Algorithm Study : 1068_Tree & DFS
package baekjoon.Tree_1068;
/*
- 리프 노드 : 자식의 개수가 0인 노드
- 트리가 주어졌을 때, 노드 중 하나를 제거할 것이다. 그 때, 남은 트리에서 리프 노드의 개수를 구하는 프로그램을 작성하시오.
# 입력
첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다.
둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다.
만약 부모가 없다면 (루트) -1이 주어진다.
셋째 줄에는 지울 노드의 번호가 주어진다.
@geoseong
geoseong / CopyTest.java
Created April 15, 2017 16:06
Practice : DeepCopy & ShallowCopy
package essential.deep_shallowCopy;
import java.util.ArrayList;
public class CopyTest {
static ArrayList<String> source = new ArrayList<String>();
static ArrayList<String> destination = new ArrayList<String>();
public static void initArrayList(){
if(null != source){
@geoseong
geoseong / 5397_KeyLog.java
Last active April 21, 2017 06:58
BaekJoon Algorithm Study : 5397_KeyLog
/*
# 문제
창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다.
며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다.
하지만, 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다.
따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력하면 정확한 비밀번호를 알아낼 수가 없다.
└ 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오.
# 입력
첫째 줄에 테스트 케이스의 개수가 주어진다.
@geoseong
geoseong / Main.java
Last active April 19, 2017 06:32
BaekJoon Algorithm Study : 4673_SelfNum
class Main{
public static int calcLen(int param){
if (param>=10){
return calcLen(param/10) + (param%10);
}else{
return param;
}
}
public static int getSelfNum(int param){
int cnt = 0;
@geoseong
geoseong / Main_First.java
Created April 19, 2017 03:25
BaekJoon Algorithm Study : 5639_Binary Search Tree
/* First Attempt
11792KB / 252 MS
*/
import java.util.Scanner;
class Node {
Node rightNode;
Node leftNode;
int value;
@geoseong
geoseong / Main.java
Last active April 20, 2017 16:06
BaekJoon Algorithm Study : 6603_Lotto
/*
# 문제
독일 로또는 {1, 2, ..., 49}에서 숫자 6개를 고른다.
로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 숫자 중 k(k>6)개의 숫자를 골라 집합 S를 만든 다음 그 숫자만 가지고 번호를 선택하는 것이다.
예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 숫자를 고를 수 있는 경우의 수는 총 28가지이다.
([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])
집합 S와 k가 주어졌을 때, 숫자를 고르는 모든 방법을 구하는 프로그램을 작성하시오.
# 입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다.
@geoseong
geoseong / 10828_Stack.java
Created April 21, 2017 06:59
BaekJoon Algorithm Study : 10828_Stack
/*
# 문제
push X: 정수 X를 스택에 넣는 연산이다.
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 스택에 들어있는 정수의 개수를 출력한다.
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
# 입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다.