자바6 [Java, 알고리즘] - 이것이 코딩테스트다 :: 위상정렬 출처 : 이것이 코딩테스트다 - 나동빈 위상 정렬 (Topology Sort) 위상 정렬은 정렬 알고리즘의 일종이다. 위상 정렬은 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘이다. 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것이다. 오른쪽 그림처럼 그래프상에서 선후 관계가 있다면, 위상 정렬을 수행하여 모든 선후 관계를 지키는 전체 순서를 계산할 수 있다. 위상 정렬 알고리즘 수행 위상 정렬을 수행하는 방식은 1. 진입 차수가 0인 노드를 큐에 넣는다. 2. 큐가 빌 때까지 다음의 과정을 반복한다. 큐에서 원소를 꺼내 해당 노드에서 출발하는 간선을 그래프에서 제거한다. 새롭게 진입차수가 0이된 노드를 큐에 넣는다. 이때 모든 원소를 방문하.. 2021. 3. 15. [java, 알고리즘, 그리디] :: 백준 - ATM 이전글 :: 2021/02/17 - [Programming/알고리즘] - [java, 알고리즘, 그리디] :: 1이 될 때까지 www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net package com.algorithm.greedyEx04; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class GreedyEx04 {.. 2021. 2. 17. [Java] - bubble sort package array; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { // 난수 담긴 배열 생성 int [] arr = new int[10]; for (int i = 0; i arr[j+1]){ int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; flag = true; } } if(!flag) break; } System.out.println(Arrays.toString(arr)); } } 2020. 10. 29. [Java] - 인덱스 값을 자유자재로 조절하는 것이 중요하다. 알고리즘 문제를 풀어보면 2차원 배열의 값을 규칙을 세우고 변경해야 하는 문제가 많다. 이때 중첩 반복문에서 루프를 돌 때마다 i, j의 값이 내가 세운 규칙에 의해 적절하게 변경되도록 식을 만들어 주어야 한다. 이 부분에서 내가 가장 어려움을 느끼는 부분은 첫째, 비전공자로서 수의 규칙을 찾는 게 어렵다. 둘째, 중첩 반복문에서 변수 i, j의 값의 변화가 한눈에 안 들어온다. 이럴 때 무식한 게 최고라고 다른 사람의 코드 중에 눈에 잘 들어오는 코드를 줄을 따라 내려가며 변수의 변화를 다 적어보는 것이다. 인덱스 값의 변화를 직접 적어보고 왜 이런 규칙이 나오는지 이해하는 것이 내게는 큰 도움이 된다. 나는 천재가 아니고 또한 비전공자라서 아직 수에 익숙하지 않다. 이런 와중에 자바 기본서로 유명한 .. 2020. 10. 27. [ Java ] - 시간을 나타내기 Calendar GregorianCalendar 라이브러리를 사용한다. import java.util.Calendar; import java.util.GregorianCalendar; public class Calender { public static void main(String[] args) { GregorianCalendar calendar = new GregorianCalendar(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int date = calendar.get(Calendar.DATE); int amPm = calendar.get(Calendar.AM); int hour = c.. 2020. 9. 22. [Java] - overloading, 메서드 오버로딩 메서드 오버 로딩이란? 메서드의 이름을 같도록 하고, 매개 변수만을 다르게 하는 것을 '오버 로딩(overloading)'이라 한다. 중요한 것은 매개변수의 개수가 같아도 타입의 순서가 다르면 다른 메서드처럼 인식된다. 코드로 보자. public class ReferenceOverloading { public static void main(String[] args) { // TODO Auto-generated method stub ReferenceOverloading reference = new ReferenceOverloading(); reference.print(12); reference.print("stringData"); reference.print(12, "data"); reference.pri.. 2020. 9. 14. 이전 1 다음