드디어 원래 목적이었던 HashMap, HashSet에 대해 작성한다. 하지만, 글이 또다시 길어져 HashMap에 대해서만 먼저 작성한다.... 네이버 D2 블로그에서 HashMap에 관한 글을 발견하여 해당 글을 토대로 작성했다. 아래 두 글을 순서대로 읽고 오면 더욱 이해하기 쉽다. [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? 얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'Hash..
Study
이 글을 읽기 전에 아래 collections에 대한 글을 읽고 오는 것을 추천한다. [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? 얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'HashMap, HashSet.. siahn95.tistory.com 이번 글에서는 Set과 Map에 대해 알아본다. Set 이란? 한국말로 '집합'의 뜻으로, 말 그대로 데이터들을 모은 집합이다. 큰 특징으로는..
얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'HashMap, HashSet에 대해 작성한다며 웬 갑자기 collections?' 라고 생각할 수 있지만, collection 자료구조 중 하나인 Set에 대해 이해하기 위해서는 collections라는 녀석에 대해 알아야 한다. collection 자료구조? 위에서 잠깐 언급된 collection 자료구조란 무엇일까? collection이란 객체이며, 배열처럼 여러 원소를 담을 수 있는 자료구조다. 그래서 'collection', 한국어로는 '무리'를 뜻한다. collections ..
문제는 여기에서 볼 수 있다. 문제 일단 Anagram(아나그램)이 무엇인지 알아야 한다. 어떠한 단어나 구(phrase)를 이루고 있는 글자(알파벳)를 정확히 한 번씩만 사용해서 만든 다른 단어나 구를 아나그램이라고 한다. 예를 들면, "eat"으로는 "tea", 혹은 "tree"로는 "reet"와 같은 아나그램을 만들 수 있다. 이 문제에서는 여러 문자열을 담은 리스트가 입력으로 주어지고 그 문자열들을 아나그램끼리 모아서 return 하면 된다. 풀이 첫 번째 방법 처음에는 입력받은 리스트의 원소를 순회하며 각 원소를 sorting 하고 해당 값을 Dictionay의 key 값으로 사용하여 value에는 리스트의 원소를 넣을 생각이었지만, 시간 복잡도가 꽤 걸릴 것 같아 시도하지 않았다. 그런데 아무..
해시에 대한 마지막 글이다. 1편과 2편을 먼저 보고 읽으면 더욱 좋다. 해시 - 보안 해시는 아래 이유들로 보안 분야에서도 널리 사용된다. 해시 함수가 원래의 문장을 복호화할 수 없게 뭉개버린다. 원문과 해시값 사이에 선형적 관계가 없다. 해시 함수의 결과물은 고정된 길이의 숫자이므로, 원래의 정보는 손실된다. 하나의 원 데이터는 하나의 해시 값만 가지지만, 하나의 해시 값을 만들어낼 수 있는 원본 데이터는 매우 많다. 4번의 이유 때문에 해시 값만 가지고는 이미 뭉개진 원문을 복원해내는 것은 불가능하다. 위와 같은 이유들로, 비밀번호, 전자서명, 전자투표, 전자상거래와 같은 민감한 입력의 무결성을 검증할 때 사용된다. 따라서, 어떤 해시 함수에서 해시 충돌이 일어나기 쉽다는 것은 데이터의 무결성과 직..
- 2021.03.16(화) 추가 faculty.cs.niu.edu/~freedman/340/340notes/340hash.htm Hashing Hashing Hashing can be used to build, search, or delete from a table. The basic idea behind hashing is to take a field in a record, known as the key, and convert it through some fixed process to a numeric value, known as the hash key, which represents the faculty.cs.niu.edu 위 사이트에는 아래 글에서 소개할 두 가지 간단한 충돌 처리 방식 외에 두 ..
얼마 전 있었던 백엔드 직무 면접에서 기초 질문을 받았는데 대답을 잘 못했다. 생각해보면 해시에 대해 자세히 공부해 본 적이 없던 것 같다. 이번 기회에 나무위키와 위키백과의 글을 참고로 공부하여 작성하였다. 해시 - 정의 위키백과에서는 "해시 함수에 의해 얻어지는 값"을 해시(해시 값, 해시 코드, 해시 섬, 체크섬)라고 정의하고 있다. 해시 함수 - 정의 그렇다면 해시 함수(Hash Function)란? 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터(해시 값)로 매핑하는 함수를 말한다. 아래 그림으로 한눈에 이해 가능할 듯싶다. 해시 함수 - 특성 해시 함수는 보통 그리 복잡하지 않은 알고리즘으로 구현된다. 따라서 상대적으로 CPU, 메모리 등의 시스템 자원을 덜 소모하는 특성이 있다. 그..
문제는 여기에서 볼 수 있다. 역시 과거에 풀었던 문제인데, 당시에는 혼자 못 풀었지만 이번에는 용케 혼자 풀었다. 문제 설명 N x N 모양의 matrix가 있고, 각 칸에는 숫자가 채워져 있다. 이를 시계 방향으로 90도 돌렸을 때 나타나는 matrix를 return하면 되는데, 문제에서 주어지는 2차원 배열 말고 다른 2차원 배열을 선언하면 안 된다는 조건이 있다. 즉, 주어진 matrix 배열만 이용하라는 뜻. 해결 과정 1차 시도 처음에는 각 칸의 인덱스를 다 적고 결과적으로 return 해야 하는 matrix에 맞추어 바뀌는 인덱스를 또 적어봤다. 예를 들면, (0, 0)의 숫자는 (0, 2)로, (0, 1)의 숫자는 (1, 2)로, (0, 2)의 숫자는 (2, 2)로 가야 하는 것처럼 00 ..
어쩌다 주워 듣게 된 SQL 작성 표준을 적어둔다. 인터넷에 검색해보면 여러 표준이 나오는데, 거의 대부분이 같다. 존재 이유 어느 회사나 SQL 작성 표준 가이드가 존재하는데, 이러한 표준에 따른 형식화된 SQL 구문은 가독성을 높여서 구현 및 유지보수를 용이하게 한다. SQL 구문 표준 1. SQL 구문은 가로 최대 길이가 80자 이하가 되도록 작성 튜닝 또는 유지보수를 용이하게 한다. 2. SQL 문의 대소문자에 대한 표준을 정하여 준수 예약어는 대문자, 개체명은 소문자 등으로 작성한다. 3. 구문을 구분하는 중요한 절은 항상 새로운 행에서 시작 SELECT, FROM, JOIN, WHERE 등과 같이 중요한 절은 새로운 행에서 시작한다. 4. 쌍(Pair)으로 구성된 구문은 줄을 정렬 BEGIN ..