반응형

전체 글 140

자료구조 - Hash

해시 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값 *매핑 : 하나의 값을 다른 값으로 대응시키는 것 탐색 하나 이상의 필드로 구성된 레코드의 집합에서 원하는 레코드를 찾는 것 *탐색을 위하여 사용되는 자료 구조 : 배열, 연결 리스트, 트리, 그래프 또한 레코드들의 집합을 테이블(Table)이라고 부른다. 테이블에서 레코드들을 어떻게 구분할까? 레코드마다 서로 구별되는 키를 가지고 있는데 이것을 탐색키라고 부른다. 의미 있는 단위를 이끌어 내기 위해서 하나의 필드를 가진 레코드만으로는 부족하다. 따라서 맵이라는 개념을 끌어온다. 맵 탐색키 그리고 탐색키와 관련된 값의 쌍을 말한다. 즉, 두 가지 필드를 가진 키를 가진 레코드 또는 엔트리로 이루어진다. 이 두 가지 값은 key, v..

IT/Computer Science 2021.11.12

Doubliy Linked List

연결 리스트의 변형된 형태인 이중 연결 리스트는 다음 노드의 포인터만 가지고 있는 단일 연결 리스트와 달리 다음 노드, 2개의 연결 포인터를 가지고 있다. 따라서 양방향으로 리스트 순회가 가능하여 어떤 노드라도 그의 이전, 이후 노드를 찾아갈 수 있다. 이중 연결 리스트의 삭제 시 프로세스는 다음과 같다. 단일 연결 리스트와 비슷하나 previous 속성을 가진다는 차이가 있다.

IT/Computer Science 2021.11.11

프로그래머스) 124 나라의 숫자

https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 나의 풀이 function solution(n) { const answer = []; while (n > 3) { if (!(n % 3)) { n = parseInt(n / 3) - 1; answer.push(4); continue; } answer.push(n % 3); n = parseInt(n / 3); } answer.push(n === 3 ? 4 : n); return answer.reverse().join(""); } 재귀함수를 사용하고 싶었는데 도저히 짤 수가 없었다.. 문제 규칙상 124만 사용할 수 있지만 3진법으로 ..

IT/Algorithm 2021.10.29

프로그래머스) 멀쩡한 사각형

https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 나의 풀이 function isCoprime(a, b) { return a % b ? isCoprime(b, a % b) : b; } function solution(w, h) { return isCoprime(w, h) === 1 ? (w * h) - (w + h - 1) : (w * h) - (w + h - isCoprime(w, ..

IT/Algorithm 2021.10.28

Hash Table에 대하여

해시 테이블이란? 어떤 특정 값을 받으면 그 값을 해시 함수에 통과시켜 나온 리턴 값을 인덱스에 저장하는 자료구조이다. 그렇다면 왜 해시 테이블을 사용할까? 직접 주소 테이블 (Direct Address Table) 해시 테이블은 직접 주소 테이블이라는 자료구조에서부터 출발한다. 직접 주소 테이블은 입력받은 value가 곧 key가 되는 데이터 매핑 방식이다. 내가 소수 찾기 알고리즘을 풀 때 소수만 남기기 위해서 0~n까지의 배열을 만들었는데 바로 그 방식인 것이다. index 0 1 2 3 4 5 6 7 8 value 0 1 2 3 4 5 6 7 8 찾고자 하는 값과 테이블의 인덱스가 동일하므로 값이 저장된 공간에 바로 접근해서 값을 가져올 수 있으므로 시간 복잡도는 O(1)이다. 마찬가지로 테이블에..

IT/Computer Science 2021.10.28

프로그래머스) 문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 나의 풀이 function solution(s) { if (s.length === 1) { return 1; } const answer = []; let string = s.split(""); let zipList = []; let count = 1; for (let i = 1; i { if (JSON.stringify(acc) === JSON.strin..

IT/Algorithm 2021.10.28

프로그래머스) 최대공약수와 최소공배수

https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 나의 풀이 function solution(n, m) { const nDivisorList = []; const mDivisorList = []; for (let i = 1, j = 1; i b라고 가정하였을 때, a를 b로 나누었을 때 나머지 r이 존재한다면 a와 b의 최대공약수는 b와 r의 최대공약수와 같다는 원리이다. 이에 ..

IT/Algorithm 2021.10.27

프로그래머스) 시저 암호

https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 나의 풀이 function solution(s, n) { const upperList = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; const..

IT/Algorithm 2021.10.27

프로그래머스) 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 나의 풀이 function solution(strings, n) { return strings.sort((a, b) => { if (a[n] b[n]) { return 1; } return a < b ? -1 : 1; }); ..

IT/Algorithm 2021.10.25

프로그래머스) 소수 찾기

https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 나의 풀이 테스트는 통과하는데 효율성 테스트에서 계속해서 광탈하였다.. 그러던 중 에라토스테네스의 체라는 '소수를 찾는 방법'을 알게 되어 효율성 테스트에서도 통과할 수 있었다. 에라토스테네스의 체의 알고리즘은 위키에서 확인할 수 있다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A..

IT/Algorithm 2021.10.25
반응형