[프로그래머스 Lv0.] 120903번 배열의 유사도 (JAVA)
·
Coding Test/프로그래머스[JAVA]
1. 문제 문제 설명 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ s1, s2의 길이 ≤ 100 1 ≤ s1, s2의 원소의 길이 ≤ 10 s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다 s1과 s2는 각각 중복된 원소를 갖지 않습니다. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"] 0 2. 풀이과정 class Solution { public int solution(String[] s1, String[] s2) { int count = 0; for(i..
[JAVA] Stream(스트림)
·
Programming Language/JAVA
Stream(스트림) 다양한 데이터 소스(컬렉션, 배열 등)를 표준화된 방법으로 다루기 위한 것 데이터 소스를 스트림으로 변환 후 여러 번의 중간 연산과 마지막의 최종 연산을 통해 다를 수 있음 배열, 컬렉션을 대상으로 연산 수행 한 번 생성하고 사용한 스트림 재사용 불가 중간 연산은 여러 개의 연산 적용 가능, 최종 연산은 마지막에 한 번 적용 최종 연산이 호출되어야 중간 연산에 대한 수행이 이루어지고 그 결과가 만들어짐 따라서 중간 연산에 대한 결과를 연산 중에 알 수 없음 → 이를 ‘지연 연산’이라 함 스트림 만들기 중간연산(반복 적용 가능, 연산 결과가 스트림) 최종연산(스트림의 요소를 소모) → 결과 리턴 list.stream() // 스트림 만들기 .distinct() // 중간연산 .limi..
[JAVA] 람다식
·
Programming Language/JAVA
람다함수란? 익명 함수를 지칭하는 용어 함수를 단순하게 표현하는 방법 람다의 장단점 장점 코드의 간결성 지연연산 수행 병렬처리 가능 단점 람다식의 호출이 까다로움 람다 스트림 사용 시 반복문 사용 시 성능이 떨어짐 가독성이 떨어질 수 있음 람다식 표현 1. 메서드의 이름과 반환 타입을 제거하고 ‘→’ 를 블록 {} 앞에 추가 2. 반환값이 있는 경우 식이나 값만 적고 return문 생략 가능( ; 생략) 3. 매개변수의 타입이 추론이 가능하면 생략 가능 주의사항 매개변수가 하나인 경우 괄호() 생략 가능(타입이 없는 경우) 블록 안의 문장이 하나뿐일 때 괄호{} 생략 가능(끝에 ; 생략) 하나뿐인 문장이 return문이면 괄호{} 생략 불가 return문과 중괄호를 같이 생략 가능 @Functionall..
[자료구조] 해시(Hash)
·
CS 지식/[자료구조]
해시(Hash) 데이터를 효율적으로 관리하기 위해 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것 해시 함수를 구현하여 데이터 값을 해시 값으로 매핑함 Lee → 해싱함수 → 5 Kim → 해싱함수 → 3 Park → 해싱함수 → 2 ... Chun → 해싱함수 → 5 // Lee와 해싱값 충돌 결국 데이터가 많아지면, 다른 데이터가 같은 해시 값으로 충돌나는 현상이 발생 → ‘collisoin’ 현상 ⇒ 그래도 해시 테이블을 쓰는 이유는? 적은 자원으로 많은 데이터를 효율적으로 관리하기 위해 하드디스크나, 클라우드에 존재하는 무한한 데이터들을 유한한 개수의 해시값으로 매핑하면 작은 메모리로도 프로세스 관리가 가능해짐 언제나 동일한 해시값 리턴, index를 알면 빠른 데이터 검색이 가능해짐 해..
[자료구조] 이진 탐색 트리(Binary Search Tree)
·
CS 지식/[자료구조]
이진 탐색 트리의 목적 이진 탐색 + 연결 리스트 이진 탐색 : 탐색에 소요되는 시간복잡도는 O(logN), but 삽입, 삭제가 불가능 연결리스트 : 삽입, 삭제의 시간복잡도는 O(1), but 탐색하는 시간복잡도가 O(N) ⇒ 이 두가지를 합하여 장점을 모두 얻는 것이 '이진탐색트리' ⇒ 즉, 효율적인 탐색 능력을 가지고, 자료의 삽입 삭제도 가능하게 하기 특징 각 노드의 자식이 2개 이하 각 노드의 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큼 중복된 노드가 없어야 함 중복이 없어야 하는 이유 검색 목적 자료구조인데, 굳이 중복이 많은 경우에 트리를 사용하여 검색 속도를 느리게 할 필요가 없음 (트리에 삽입하는 것보다, 노드에 count 값을 가지게 하여 처리하는 것이 훨씬 효율적) 이진탐..
[자료구조] 트리(Tree)
·
CS 지식/[자료구조]
트리 트리는 값을 가진 노드와 이 노드들을 연결해주는 간선(Edge)으로 이루어져있음 그림 상 데이터 1을 가진 노드가 루트(Root) 노드 모든 노드들은 0개 이상의 자식(Child) 노드를 갖고 있으며 보통 부모-자식 관계로 부름 트리의 특징 트리에는 사이클이 존재할 수 없음 (만약 사이클이 만들어진다면, 그것은 트리가 아니고 그래프) 모든 노드는 자료형으로 표현이 가능 루트에서 한 노드로 가는 경로는 유일한 경로 뿐 노드의 개수가 N개면, 간선은 N-1개를 가짐 트리 순회 방식 1. 전위 순회(pre-order) 각 루트(Root)를 순차적으로 먼저 방문하는 방식 (Root → 왼쪽 자식 → 오른쪽 자식)1 → 2 → 4 → 8 → 9 → 5 → 10 → 11 → 3 → 6 → 13 → 7 → 14..