분류 전체보기 118

제네릭스(Generics) - JAVA

제네릭스 제네릭스란 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능입니다. 타입체크를 함으로써 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어들게 됩니다. 타입 안정성이 높다는 뜻은 의도하지 않는 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여 줍니다. 그래서 코드를 안전하게 작성이 가능하고, 형변환의 번거로움이 줄어 코드가 간결해집니다. 제네릭 클래스를 한번 만들어 보겠습니다. import java.util.ArrayList; class GenericExam { public static void main(String[] args) { MyGeneric myGeneric = new My..

Set, Map - JAVA

이전에 포스팅한 컬렉션프레임워크에서 추가로 정리하지않은 Set 과 Map 을 정리하여 포스팅을 시작하겠습니다. Set 인터페이스 - Set 인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용됩니다. 대표적으로는 HashSet, TreeSet 이 있습니다. HashSet Set 인터페이스를 구현한 가장 많이 사용되기도 하는 대표적인 컬렉션 입니다. Set 인터페이스의 특징대로 HashSet 도 중복된 요소를 저장하지 않습니다. Hashset은 중복을 허용하지 않기 위해 객체를 추가하기 전에 기존에 저장된 요소와 같은 것인지 판단하기 위해 요소의 equlas() 와 hashCode()를 호출 합니다. 만약 객체를 비교한다고하면 equlas()와 hashCode()를 목..

컬렉션 프레임워크(Collections Framework) - JAVA

컬렉션 프레임워크란? 데이터 군을 저장하는 클래스들을 표준화한 설계를 뜻합니다. 다수의 데이터를 쉽고 효과적으로 처리할수 있게 다양하고 많은 클래스들을 제공하고 인터페이스와 다형성을 이용한 객체지향적 설계가 표준화되어 재사용성이 높은 코드를 작성할 수 있는 장점이 있습니다. 컬렉션 프레임워크 핵심 인터페이스 컬렉션 프레임워크는 컬렉션을 다루는데 필요한 주요 인터페이스를 정의하고 있습니다. Map 인터페이스는 컬렉션 인터페이스와 다른 형태로 컬렉션을 다루기 때문에 상속 계층도에 포함되지 못하고 별도로 정의됩니다. 인터페이스 특징 List 순서가 있는 데이터의 집합, 데이터의 중복을 허용 - 구현클래스: ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터..

[백준1946] - 신입 사원

[문제] https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net [문제풀이 전] 예전에 풀어봤던 문제를 다시 풀어봤는데 그때에 비해 시간을 덜 쓰게 됐는데 차이를 보니 Arrays.sort 와 Collections.sort 의 정렬의 속도 차이가 있다는 사실을 알았다. Arrays.sort() 는 Dual-Pivot Quict sort 를 활용하는데 시간복잡도가 O(nlongn) ~ O(n^2) 의 속도를 낸다. Collectio..

백준 문제풀이 2022.03.07

Comparator 와 Comparable - JAVA

처음 이 개념을 접했을 때는 뭐지.. 인터페이스는 뭐고, 객체는 뭐고 어떻게 쓰는 거지 했는데 공부하다 보니 인터페이스도 알게 되고, 객체도 알게 되니 '아! 이래서 이렇게 쓰는구나' 하고 깨달음을 얻었다. 그래서 혹시 만약 인터페이스나 객체 등 여기 관련된 어떤 개념을 모른다면 그부분을 먼저 배우면 빠르게 습득이 가능할 것입니다. 아마 위 개념을 모른다면 Arrays.sort( )을 호출하면 알아서 배열을 정리하는 것으로 생각을 하셨을 가능성이 높습니다. 사실 이 정렬기능은 Comparable의 구현에 의해 정렬되었던 것입니다. 정렬을 하려면 '기준'이 필요합니다. Comparator와 Comparable은 모두 인터페이스로 객체를 비교할 수 있도록 만들게 하고, 이것을 사용하려고하면 인터페이스니 선언..

[백준2667] - 단지 번호 붙이기 (JAVA)

[문제] https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net [문제풀이 전] 처음 문제 풀때 생각없이 방문처리를 boolean 으로 하려해서 낭패를 보았다. 문제에 그림2를 보면 힌트가 주어졌다. 새로운 BFS가 시작되면 단지번호를 증가하여 결국 그림2 처럼 만들어 해당 개수만 세어주면 되는데 문제를 천천히 꼼꼼히 읽어야 겠다.. [문제풀이] BFS를 활용한 문제로 상하좌위 연결된 집의 모임을 단지라고 지정을 하여 번호를 붙여 단지수를 출력하고, 각..

백준 문제풀이 2022.03.04

[백준2096] - 내려가기 (JAVA)

[문제] https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net [문제풀이 전] 문제를 보자마자 정수삼각형 문제가 떠올랐다. 그래서 똑같은 방법으로 접근하여 점화식을 d[i][j] = i, j 지점에 왔을 때 수의 최대, 최소 값 이라고 정하고, 문제에 주어진 조건에 따라 푸니 쉽게 풀렸다. 아마 정수삼각형을 먼저 풀었으면 누구나 쉽게 풀었을 것 같다. [문제풀이] 문제에서 숫자표가 주어져 있을 때, 얻을 수 있는 최대 점수, 최소 점수를 구하라 하였으니 이를 토대..

카테고리 없음 2022.03.01

MySQL 기초 - 간단한 문법

[참고] 여기서 다루는 테이블의 기준은 아래의 홈페이지 기준입니다. 수많은 테이블을 직접 만들지 않고 여기서 데이터 다루시면서 공부하면 좋을 것 같습니다. https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all MySQL Tryit Editor v1.0 WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, and Opera. If you use another browser you will still be able to use our Try ..

MySQL 2022.02.25

String 클래스 - JAVA

String 클래스 실제로 코테에서도 많이 활용되고, 자바의 정석에서도 중요하다고 강조를 하셔서 정리를 하게 되었습니다. String 클래스는 변경 불가능한(immutable) '클래스' 입니다. 클래스이기 때문에 String 은 기본 타입(Primitve Type)이 아닌 참조 타입(Reference Type)입니다. 아래 코드를 보면 String 클래스에는 문자열을 저장하기 위해서 byte[] 배열 변수 value 를 인스턴스 변수로 정의하고 있습니다. public final class String implements java.io.Serializable, Comparable, CharSequence, Constable, ConstantDesc { /** * The value is used for c..