본문 바로가기

Programming language/Java

(28)
Java - 17 DFS [java로 구현] DFS의 개념은 아래 글을 참고한다. doodreamcode.tistory.com/34?category=798601 자료구조 - 탐색알고리즘 DFS DFS(Depth - First search) 깊이 우선탐색이라고도 불리며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS를 알아보기 전에 간단한 그래프를 알아보자 그래프 노드(node) 와 간선(edge)으 doodreamcode.tistory.com DFS는 모든 경우의 수를 탐색할때 사용한다. 조합, 순열등 다양한 곳에서 사용가능하다. DFS는 내부함수로서 구현이 된것이 아니기 때문에 필요할 때 마다 DFS라는 개념을 구현을 해야한다. 여기서는 java로 DFS를 짤 때의 틀을 정리하고자한다. class Solution { private..
Java - 16 [정규표현식, Pattern, Matcher 클래스] 정규표현식 (Regular Expression) - 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 이다. - 전화번호, 주민등록번호, 이메일 등과 같이 특정 형식을 맞춰야 하고 사용자가 그러한 형식을 잘 맞추었는가 검증해야하는 경우가 있다. 이럴 때 정규표현식을 사용하여 걸러 낸다. 정규표현식 문법 정규 표현식 설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 한 문자(단 \은 넣을 수 없음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. { } 횟수 또는 범위를 나타냅니다. ( ) 소괄..
Java - 15 [HashSet, 람다식, 타입출력] HashSet - HashMap에서 키만 저장하는 클래스로서 보통 중복제거를 위해 사용한다. HashSet도 HashMap과 거의 동일하게 사용하지만 키에 대한 값이 없다. 중복제거를 하면 원소의 값을 읽거나 제거하거나 더하거나 탐색을 할때는 HashMap은 get()을 사용하면 되지만, HashSet은 그러한 것이 없다. 그럴때 iterator()를 사용한다. HashSet set = new HashSet(); permutation("", numbers, set); int count = 0; // HashSet 사용하기 // HashSet을 배열처럼 사용하기 위해서는 iterator()가 꼭 필요하다. // iterator().hasNext()는 다음 원소가 있는지 없는지 판별한다. while(set...
Java - [공식 Document 보는방법] 구글링하면서 블로그에 올라가는 Document를 보는 것은 바로바로 도움이 많이 되긴하지만 개념이 얕아 나의 온전한 지식이라고 보기는 힘들다. 온전한 개념을 알아야 응용이되며 훨씬 효율적인 코드로 발전될 것이다. 자바의 공식문서는 아래문서와 같다. docs.oracle.com/javase/7/docs/api/ Java Platform SE 7 docs.oracle.com 원하는 메소드 혹은 클래스를 검색하려면 그냥 ctrl + F를 눌러서 키워드로 검색한다. 각부분 별로 살펴보면 왼쪽 상단의 Packages는 자바가 기본적으로 제공하는 package들이다. 이러한 package안에 클래스들이 들어가있는데 해당클래스가 어느 package에 속해있는지 알고 싶다면 오른쪽 상단을 보면 클래스 이름위에 java..
Java - IntellJ [단축키] 제너레이터 단축키 : alt + Insert - 서피스 사용자 : alt + (Fn + Del = insert) setting 단축키 : ctrl + alt + s 타입일괄 변경 : 해당 단어에 커서를 둔후 - shift + F6 대부분 live template 으로 커버한다. 이후 추가로 사용할 일이 있을 때 단축키를 넣도록 하겠다. gmlwjd9405.github.io/2019/05/21/intellij-shortkey.html [IntelliJ] intellij 유용한 단축키 정리 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io
Java - 14 [추상클래스, 익명클래스, Comparable 인터페이스] 추상클래스 이 사진 하나로 추상클래스는 설명이된다. public abstract class Shape { public abstract double getArea(); public abstract double getPerimeter(); } public class Circle extends Shape { public static final double PI = Math.PI; private final double radius; public Circle(double radius) { this.radius = radius; } @Override public double getArea() { return radius * radius * PI; } @Override public double getPerimeter..
Java - 13 [Generic, 인터페이스] Generic(제네릭) public class Box { private T something; public void set(T object) { this.something = object; } public T get() { return something; } } - 위 코드에서 이렇게 꺽쇠 표시 안에 담긴 것을 '타입 파라미터'라고 한다. - 이러한 타입파라미터를 인수로 받는 클래스를 '제네릭(Generic) 클래스' 라고 한다. 이러한 제네릭 클래스로 인스턴스를 선언할 때 T 라는 타입파라미터를 바꿔준다면 Box box = new Box(); public class Box { private String something; public void set(String object) { this.somethi..
Java - 12 [캐스팅] DRY(Don't Repeat Yourself) 코드가 DRY 하다라는 말을 들어본적 있는가? DRY(Don't Repeat Yourself) 중복배제 라는 뜻으로 같은 의미의 코드가 무의미하게 반복되지 않는 코드라는 뜻이다. 예를 들면 for문으로 할것을 같은 코드를 반복해서 수행한다면 DRY하지 않다. 이를 for문으로 해결하면 코드가 DRY하다라고 하는 것이다. 코딩은 항상 DRY 해야한다. 캐스팅 - 캐스팅은 이러한 DRY한 코드를 위해 사용된다. public class BankAccount { boolean deposit(int amount) { // 입금액이 0보다 작거나 계좌주의 현금보다 입금액이 클 경우는 입금 실패 // 입금이 실패할 경우는 입금되지 않는다. if (amount < 0 |..