전체 글
-
[Java]덱(Deque)Algorithm/자료구조 for Algorithm 2021. 2. 18. 22:08
*덱(Deque) -> 덱이란 큐와 스택의 특성을 동시에 가질 수 있는 자료구조이다. -> 두 가지 특성을 동시에 활용할 수 있기 때문에 더 다양하게 활용될 수 있다. *Java의 덱 -> 덱 자료 구조는 기본적으로 Queue의 구조를 채용하고 있다. 따라서 일반 큐의 연산인 poll() 메서드와 offer() 메서드는 동일하게 사용할 수 있다. -> 덱 자료 구조는 양 방향을 모두 head로 볼 수 있다. 따라서, 배열의 관점에서 인덱스가 0인 부분의 head는 일반 큐 메서드 이름에 Fisrt를 추가하여 구분하고, 마지막 인덱스 부분의 head는 Last를 추가하여 구분한다. -> peek() 메서드도 마찬가지이다. 좌측 부분의 head를 확인하고 싶다면 peek() 메서드 혹은 peekFirst()..
-
[Java]중복 조합(Combination with repetition)Algorithm/완전 탐색 2021. 2. 18. 16:35
중복 조합을 완벽하게 이해하기 위해서는 순열, 중복 순열, 조합 세 가지를 모두 정확히 이해하고 공부하는 것이 좋다 sskl660.tistory.com/48?category=879763 [Java] 순열(Permutation) *순열(Permutation) -> 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선택한 순열을 구하시오라고 하면, 결과는 {123, 132, 213, 231, sskl660.tistory.com sskl660.tistory.com/49?category=879763 [Java] 중복 순열(Permutation with repetition) *중복 순열(Permutation with repetition..
-
[Java]조합(Combination)Algorithm/완전 탐색 2021. 2. 18. 14:42
조합은 기본적으로 순열을 이해하고 있어야 이해하기 더 수월하다. sskl660.tistory.com/48 [Java] 순열(Permutation) *순열(Permutation) -> 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선택한 순열을 구하시오라고 하면, 결과는 {123, 132, 213, 231, sskl660.tistory.com *조합(Combination) -> 조합이란, 임의의 집합을 순서가 없이 선택하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 2개의 원소를 선택한 조합을 구하시오라고 하면, 결과는 {12, 13, 23} 총 3가지의 경우의 수가 나온다. ※ 조합이 총 3가지가 나오는 이유..
-
[Java]중복 순열(Permutation with repetition)Algorithm/완전 탐색 2021. 2. 18. 14:13
*중복 순열(Permutation with repetition) ->순열을 이해했다면, 중복 순열은 이해하기 쉽다. 순열을 먼저 이해하도록 하자. sskl660.tistory.com/48 [Java] 순열(Permutation) *순열(Permutation) -> 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선택한 순열을 구하시오라고 하면, 결과는 {123, 132, 213, 231, sskl660.tistory.com ->중복 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는데 일반 순열과 다르게 집합의 원소를 중복해서 선택할 수 있는 차이가 존재한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선..
-
[Java]순열(Permutation)Algorithm/완전 탐색 2021. 2. 18. 13:55
*순열(Permutation) -> 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선택한 순열을 구하시오라고 하면, 결과는 {123, 132, 213, 231, 312, 321} 총 6가지의 경우의 수가 나온다. ※ 순열이 총 6가지가 나오는 이유는, 위의 예시에서 선택한 3가지 수를 위 박스에 하나씩 넣는 상황을 가정해보면, 첫 번째 자리에는 {1, 2, 3}중 한 가지 숫자 어느것이든 올 수 있다. 두 번째 자리에는 앞에서 이미 한 가지 수를 선택했으므로, 그 선택한 수를 제외한 2가지 숫자가 어느 것이든 올 수 있다. 마지막 자리는 선택이 되지 않은 나머지 한 가지 수가 오게 될 것이다. 따라서 3개의 숫자를 3개선택..
-
[Java]해시맵(HashMap)Algorithm/자료구조 for Algorithm 2021. 2. 13. 18:46
*Java Collections : 맵(Map) 인터페이스 ->모든 데이터를 '키(Key)'와 '값(Value)'의 '한 쌍(Pair)의 형태'로 연관지어 저장한다. ->키(Key)는 중복을 허용하지 않고, 값(Value)은 중복을 허용한다. ->순서는 중요하지 않다 : 순서가 없다. *해시맵(HashMap) 클래스 ->맵 인터페이스를 구현한 자바의 대표적인 Collections 클래스. ->해시(Hash)를 사용하기 때문에 검색이 빠르다(리스트에서 검색하는 속도보다 빠르다). ->키(Key)와 값(Value)을 저장하기 때문에, HashMap의 형태로 선언한다. HashMap hm = new HashMap(); ->기본적으로 삽입은 put, 삭제는 remove, 조회는 여러가지 방법으로 할 수 있다. ..
-
자바(Java) 싱글턴 패턴(Singleton Pattern)ProgrammingLanguage/Java 2021. 1. 23. 12:28
*싱글턴 패턴 ->객체가 1개의 인스턴스만 가져야 하는 경우 사용하는 자바의 디자인 패턴 중 하나이다. ->장점 : 인스턴스가 1개만 생성되기 때문에 효율적인 메모리 관리가 가능하다. ->단점 : 동시에 해당 인스턴스를 공유하는 환경(특히, Multithread 환경)에서 동시성(Concurrency) 문제 고려로 인하여 프로그램의 유연성이 감소한다. ※이러한 동시성의 문제를 해결한 것을 Thread-safe하다 라고 한다. 여러가지 싱글턴 패턴(이른 초기화 방식, 게으른 초기화 방식...)이 존재하는데, 이 글에서는 이른 초기화 방식만 다룬다. *싱글턴 패턴 : 이른 초기화(Eager Initialization) ->이른 초기화는 static 예약어를 사용하여 정적 바인딩(Static binding)을..
-
자바(Java) BufferedReader 클래스ProgrammingLanguage/Java 2021. 1. 18. 23:53
자바의 BufferedReader 클래스를 사용하기 전에, 먼저 스트림(Stream)의 개념과, Scanner 클래스에 대해 먼저 간단히 이해 하는 것이 좋다. 잘 모른다면 아래 글을 참고하여 이해하도록 하자. sskl660.tistory.com/44 스트림(Stream)과 자바(Java)의 Scanner 클래스 *입출력 스트림(Stream) ->컴퓨터 공학에서 스트림은 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈을 말한다. 이름의 의미와 마찬가지로 스트림은 도착한 순서대로 데이터 sskl660.tistory.com *vs. Scanner ->BufferedReader 와 Scanner 클래스는 대표적인 Java의 문자열을 입력받는 클래스이다. 특히 알고리즘 문제 풀이시 대용량 데이터를..
-
스트림(Stream)과 자바(Java)의 Scanner 클래스ProgrammingLanguage/Java 2021. 1. 14. 21:22
*입출력 스트림(Stream) ->컴퓨터 공학에서 스트림은 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈을 말한다. 이름의 의미와 마찬가지로 스트림은 도착한 순서대로 데이터를 흘려 보낸다. ->스트림을 통해 흘러가는 데이터의 기본 단위는 바이트(Byte)이다. ->입력 스트림(Input Stream) : 입력 장치(마우스, 키보드, 네트워크...)와 프로그램이 연결되어, 입력된 데이터가 프로그램으로 순서대로 흘러간다. ->출력 스트림(Output Stream) : 프로그램과 출력 장치(모니터, 프린터, 네트워크...)가 연결되어, 출력 데이터가 출력 장치로 순서대로 흘러간다. ※위의 그림을 통해 스트림은 단방향이며, 선입선출(FIFO) 구조임을 알 수 있다. ->자바는 바이트 스트림과 문..
-
깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)ProgrammingLanguage/Java 2021. 1. 13. 23:15
깊은 복사와 얕은 복사를 이해하기 위해서는 값 복사와 주소 복사를 이해해두어야 한다. 잘 모른다면 아래 글을 참고하여 이해하도록 하자. sskl660.tistory.com/37?category=866784 메서드 Overloading과 매개변수 *변수의 중복 선언 ->변수의 경우는 데이터의 타입이 달라도 변수 이름이 동일한 경우를 허용하지 않는다. Ex) 다음과 같은 경우는 컴파일 에러가 발생한다. class Employee { String name; // age 변수가 in sskl660.tistory.com *얕은 복사(Shallow Copy) ->얕은 복사는 쉽게 말해 주소가 복사되는 것을 말한다. public class ShallowCopy { public static void main(Strin..