import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class Node{ private int num1; private int num2; public Node(int num1, int num2) { this.num1 = num1; this.num2 = num2; } public int getNum1() { return this.num1; } public int getNum2() { return this.num2; } } public cla..
Algorithm
그래프를 인접리스트로 표현 import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { // 그래프 변수(인접리스트 이용) public static ArrayList graph = new ArrayList(); public static int N,M,V; // 방문 체크 변수 public static boolean[] visited; // DFS 함수 public static void DFS(int num) { // 현재 노드 번호 방문 처리 visited[num] = true; Syst..
이 포스팅에서 작성하는 내용은 이것이 취업을 위한 코딩테스트다 (나동빈 지음) 에서 발췌하였습니다. 그래프 - 구성 : 노드(정점), 간선 - A노드와 B노드가 간선으로 연결되어 있는 경우 'A노드와 B노드는 인접하다.' 라고 표현 프로그래밍에서의 그래프 표현 방법 # 인접 행렬 : 2차원 배열로 그래프의 연결 관계 표현 - 2차원 배열에 각 노드가 연결된 형태를 기록 - 간선으로 연결되어 있지 않은 노드는 '무한' or '99999999' 와 같은 정답이 될 수 없는 큰 값으로 초기화 하는 경우가 多 public class Main { public static final int INFINITE = 999999999; // 2차원 배열를 이용해 인접 행렬 표현 public static int[][] gr..
이 포스팅에서 작성하는 내용은 이것이 취업을 위한 코딩테스트다 (나동빈 지음) 에서 발췌하였습니다. 탐색(Search) : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 대표적인 탐색 알고리즘 : DFS / BFS 자료구조(Data Structure) : 데이터를 표현하고 관리하고 처리하기 위한 구조 삽입(Push) : 데이터 삽입 삭제(Pop) : 데이터 삭제 오버플로(Overflow) : 공간이 꽉 찼는데 삽입 연산을 하면 발생 언더플로(Underflow) : 공간에 데이터가 없는데 삭제 연산을 하면 발생 자료구조 스택(Stack) : FILO(First In Last Out)의 선입후출 구조. 즉, 데이터가 먼저 들어가면 가장 늦게 나오는 구조. import java.util.Stack; pu..
// Don't place your source in a package import java.util.*; import java.lang.*; import java.io.*; // Please name your class Main class Main { public static void main (String[] args) throws java.lang.Exception { // TODO Auto-generated method stub // 시간 제한으로 인해 시간이 상당히 촉박하니 Scanner가 아닌 BufferedReader 및 StringTokenize 이 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Strin..
이 포스팅에서 작성하는 내용은 이것이 취업을 위한 코딩테스트다 (나동빈 지음) 에서 발췌하였습니다. 그리디(Greedy) : 현재 상황에서 당장 좋은 것만 고르는 알고리즘. ex) 거스름돈 알고리즘 - 동전을 가장 적게 주는 문제 그리디 관련 예제 소스(java로 작성) 아래의 소스들은 제가 공부하면서 작성한 코드이기에 참고용으로만 봐주시면 감사하겠습니다. - 큰 수의 법칙 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static v..
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String str = sc.nextLine(); // 0으로 이루어진 그룹과 1로 이루어진 그룹 중 적은 그룹의 수를 찾으면 해결 가 // 그룹? 연속된 숫자의 모임 int count0 = 0;// 0의 그룹 카운 int count1 = 0;// 1의 그룹 카운트 String[] strArr = str.split(""); // 처음 원소만 num에 넣고 해당 숫자 카운트 증..
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub // 2~7은 6, 8~19는 12, 20~37는 18, 38~61은 24. // 즉, 6n만큼 증가되는 규칙을 가지고 있다. Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 입력받은 수가 1인 경우 1임. int result = 1; // 입력받은 수가 1이 아닌 경우에 if(num != 1) { int startNum = 2; int endNum; for(int i = 1;true;i++) { // 시작점도 포함이므로 1..