본문 바로가기
728x90

분류 전체보기259

[자바/Java] Collection2 - 사용예제 저번 글에서는 자바 Collection 의 개념에 대해서 다루었다. 이번 글에서는 자바 Collection에 속해있는 해당 클래스들의 사용 예제를 다루면서 Collection의 사용법에 대해서 다루겠다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-Collection1-%EA%B0%9C%EB%85%90 [자바/Java] Collection1 - 개념 컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함된다. 그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있 codingralro.tistory.com List I.. 2023. 10. 13.
[자바/Java] Collection1 - 개념 컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함된다. 그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있기 때문에 generic에 대해서 잘 모른다면 아래 블로그를 참고하기 바란다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-%EC%A0%9C%EB%84%A4%EB%A6%ADGeneric [자바/Java] 제네릭(Generic) 제네릭(Generic)이란 자바를 조금씩 알아가고 있는 사람에겐 제네릭이라는 키워드는 생소할 수 있다. 하지만, 이미 수없이 우리는 제네릭을 마주해왔음을 이번 글을 통해 알 수 있을.. 2023. 10. 13.
[알고리즘] 이분탐색 : Upper/Lower Bound(feat. Java) Upper/Lower Bound란 Lower/Upper Bound는 이분 탐색에서 나온 개념으로 이분 탐색은 분할 정복을 이용하여 원하는 값을 적은 시간복잡도로 구할 수 있는 유용한 알고리즘이다.(분할정복 모르시는 분은 아래 링크 참고!!) https://codingralro.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B6%84%ED%95%A0%EC%A0%95%EB%B3%B5-feat-Java [알고리즘] 분할정복 (feat. Java) 분할정복 알고리즘이란 분할정복 알고리즘은 그대로 해결할 수 없는 큰 문제를 작은 문제로 분할하여 작은 문제부터 정복하여 결국에는 큰 문제를 해결하는 알고리즘이다. 대표적인 분할정복 codingralro.tis.. 2023. 10. 13.
[프로그래머스] Lv3 문제풀이7(feat. JAVA) 디스크 컨트롤 import java.util.*; import java.util.stream.IntStream; class Solution { class Job { int start; int cost; Job(int start, int cost) { this.start = start; this.cost = cost; } } public int solution(int[][] jobs) { int answer = 0; PriorityQueue heap = new PriorityQueue((o1, o2) -> { if(o1.start != o2.start) return o1.start - o2.start; else return o1.cost - o2.cost; }); IntStream.range(0, jobs.. 2023. 10. 13.
[자바/Java] 제네릭(Generic) 제네릭(Generic)이란 자바를 조금씩 알아가고 있는 사람에겐 제네릭이라는 키워드는 생소할 수 있다. 하지만, 이미 수없이 우리는 제네릭을 마주해왔음을 이번 글을 통해 알 수 있을 것이다. 제네릭이란 데이터의 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 즉, 사용자에 의해 어떤 타입으로 지정이 되는 해당 클래스의 메소드는 동일한 기능을 하는 것이다. 이러한 제네릭이 적용된 클래스는 익히 알고 있는 ArrayList, LinkedList 등이 있다. 예를 들어, ArrayList를 통해 특정 타입의 배열을 생성하고 싶을 때 다음과 같이 생성을 한다. // Integer 배열 ArrayList intList = new ArrayList(); // String .. 2023. 10. 12.
[자바/Java] Wrapper 클래스 Wrapper클래스란 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, String등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 생긴다. 이 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다. 자바는 모든 기본타입(primitive type)에 대해 객체를 생성할 수 있는 Wrapper 클래스가 있다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입.. 2023. 10. 12.
[자바/Java] Time 패키지의 클래스 저번 글에서는 Data클래스에 대해서 알아보았다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-Date-%ED%81%B4%EB%9E%98%EC%8A%A4 [자바/Java] Date 클래스 Date 클래스 자바에서는 날짜와 시간을 다룰 수 있는 여러 메소드를 제공하는 Date 클래스가 있다. java.util.Date를 import 하여 해당 객체의 메소드를 사용할 수 있다. JDK 1.8(Java 8) 부터는 java.time.* 패키 codingralro.tistory.com 하지만 저번 글에서도 언급하였듯이 Date 클래스는 현재 대부분의 메소드가 사용을 권장하지 않고(deprecated) 있다.(공식문서를 보면...) Time 패키지(.. 2023. 10. 11.
[알고리즘] 크루스칼(Kruskal) 알고리즘(feat. Java) 크루스칼 알고리즘 크루스칼 알고리즘은 그래프에서 최소 비용 신장 부분 트리를 찾는 알고리즘이다. 최소 비용 신장 부분 트리란, 노드와 비용을 가지는 간선으로 이루어진 그래프에서 모든 노드를 방문하는 경로 중 최소 비용을 가지는 경로를 갖는 부분 트리를 뜻한다. 작동 방식 크루스칼 알고리즘은 기본적으로 그리디한 선택을 바탕으로 알고리즘을 진행한다. 또한, union find(서로소 집합) 알고리즘을 이용하기 때문에 사전에 공부를 해 두는 것이 이해에 도움이 된다. 주어진 그래프의 모든 간선을 간선의 연결비용을 오름차순 정렬 정렬된 간선 순서 대로 선택하면서, 간선의 양 끝 점을 Union한다. 이때에, 두 정점 모두 같은 집합에 있다면 포함X 이를 통해 최종적으로 선택된 간선을 연결한 것이 최소 비용 신장.. 2023. 10. 11.
[알고리즘] 슬라이딩 윈도우 알고리즘(feat. Java) 슬라이딩 윈도우 알고리즘 슬라이딩 윈도우 알고리즘은 1차원 배열을 2회 이상 반복 탐색해야 할 때의 문제점인 시간복잡도(O(n^2))를 O(n)으로 줄일 수 있는 유용한 알고리즘이다. 이름처럼 1차원 배열에서 고정된 윈도우 사이즈만큼의 부분 배열이 특정 조건을 일치하는 지 처음부터 끝까지 슬라이딩하며 탐색하는 알고리즘인 것이다. 슬라이딩 윈도우 알고리즘의 경우, 윈도우 사이즈가 고정적이기 때문에 구현을 하는 것도 쉽다. 간단하게 단계를 서술하면 다음과 같다.(아래 그림 참고) 윈도우 사이즈만큼의 배열의 값들을 집어넣음(list, queue, ...) 배열의 오른쪽으로 한칸 슬라이드 슬라이드 되었으므로 부분배열의 첫부분은 삭제, 추가된 부분의 값 추가 문제풀이를 통한 코드 이해 풀이할 문제는 프로그래머스 .. 2023. 10. 11.
[프로그래머스] Lv3 문제풀이6(feat. JAVA) 가장 먼 노드 import java.util.*; import java.util.stream.IntStream; class Solution { public int solution(int n, int[][] edge) { int answer = 0; ArrayList[] list = new ArrayList[n+1]; for(int[] e : edge) { int x = e[0]; int y = e[1]; if(list[x] == null) list[x] = new ArrayList(); list[x].add(y); if(list[y] == null) list[y] = new ArrayList(); list[y].add(x); } int[] dist = new int[n+1]; Arrays.fill(dis.. 2023. 10. 11.
[자바/Java] Date 클래스 Date 클래스 자바에서는 날짜와 시간을 다룰 수 있는 여러 메소드를 제공하는 Date 클래스가 있다. java.util.Date를 import 하여 해당 객체의 메소드를 사용할 수 있다. JDK 1.8(Java 8) 부터는 java.time.* 패키지를 통해 Date, Calendar 클래스를 충분히 대체할 수 있으나, 오랜 시간 써 온 클래스인 만큼 자바를 다루는 개발자라면 알아두면 유용하다.(But, Date 클래스의 경우 자바에서 사용을 지양을 하고 있기 때문에 Date 클래스는 기본 지식으로서 알아두기만...) 기본 생성자 Date 객체는 기본 생성자를 통해 생성할 수 있고 이 때에 객체에는 현재 날짜, 시간이 담긴다. //기본생성자를 통한 객체 생성 2023. 10. 10.
[프로그래머스] Lv3 문제풀이5(feat. JAVA) 불량 사용자 import java.util.*; class Solution { public int cnt = 0; public Set lst = new HashSet(); public void permutation(String[] user_id,String[] banned_id, int depth, int n, int r) { if (depth == r) { boolean wrong = false; String[] slist = new String[r]; for(int i = 0; i < r; i++) { if(banned_id[i].length() != user_id[i].length()){ wrong = true; break; } for(int j = 0; j < banned_id[i].length(.. 2023. 10. 10.
728x90
반응형