전체 글 38

[LEETCODE] 706. Design HashMap

리트코드 - Design HashMap문제 설명내장 해시테이블 라이브러리를 사용하지 않고 HashMap을 구현하라예시제한 사항0 At most 104 calls will be made to put, get, and remove.아이디어제한 범위가 10^6 이라 배열로 충분히 간단하게 구현이 가능하다.사이즈 1000001인 배열을 만들고 인덱스를 키값으로 구현LinkedList를 활용해서 해결이 가능하다(추후 정리)JAVA 풀이class MyHashMap { int[] m; public MyHashMap() { m = new int[1000001]; Arrays.fill(map, -1); } public void put(int key, int value) { ..

알고리즘 2024.10.09

[프로그래머스] - 숫자 변환하기 JAVA 풀이

프로그래머스 - 숫자 변환하기 JAVA 풀이문제 설명자연수x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다.x에 n을 더합니다x에 2를 곱합니다.x에 3을 곱합니다.자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요.제한사항1 ≤ x ≤ y ≤ 1,000,0001 ≤ n y입출력 예아이디어브루트포스로는 시간초과bfs로 해결이 가능하지만 dp가 가장 적절한 해법인듯 하다각 계산식 경우의 수 마다 비교해가면서 dp 배열 만들고 변환 불가처리만 주의하자JAVA 풀이class Solution { public int solutio..

알고리즘 2024.10.08

MySQL - 전문검색 쿼리 (자연어, BOOLEAN)

전문 검색 쿼리 모드MySQL 서버의 전문 검색 쿼리는 자연어 검색모드, BOOLEAN 검색모드를 지원하고 default 는 자연어 검색이다.자연어 검색모드와 같이 사용할 수 있는 검색어 확장 기능도 지원한다.자연어 검색 (NATURAL LANGUAGE MODE)자연어 검색은 검색어에 제시된 단어들을 가장 많이 가지고 있는 순으로 정렬해서 결과를 반환한다.SELECT id, title, contents, MATCH(title, contents) AGAINST ('뿌링클' IN NATURAL LANGUAGE MODE) AS scoreFROM articleWHERE MATCH(title, contents) AGAINST ('MySQL' IN NATURAL LANGUAGE MODE);BOOLEAN 검색자연어 ..

데이터베이스 2024.10.06

[프로그래머스] PCCP 기출문제 - 붕대 감기 JAVA 풀이

프로그래머스 - 붕대 감기문제 설명어떤 게임에는 붕대 감기라는 기술이 있습니다.붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다.기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다.몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니..

알고리즘 2024.10.04

MySQL - LIKE 문에서 전문검색으로의 전환

FULL TEXT INDEX검색을 개선해보자데이터가 점차 쌓이다 보니 슬로우 쿼리도 생기고 정확도 순으로의 검색도 도입해보자LIKE문 에서 FULLTEXT조회로 변환한다전문검색MySQL 서버의 인덱스라 하면 B-Tree 자료구조로 단어를 검색이 가능하지만 MySQL 서버는 용량이 큰 문서를 단어 수준으로 잘게 쪼개 문서검색이 가능한데 이것을 전문검색(Full-text Search)라고 한다.예전 버전의 MySQL서버는 일부 스토리지 엔진에서만 제공됐던 전문검색 기능을 8.0 버전부터 InnoDB 스토리지 엔진에서도 사용 가능하도록 개선되었다.문서의 단어들을 분리해 형태소를 찾고 인덱싱하는 방법은 서구권 언어에서는 적합하지만 한국어에는 적합하지 않다. 이것을 보완하기 위해 MySQL 8.0에서부터 형태소나..

데이터베이스 2024.10.03

[프로그래머스] 정수를 나선형으로 배치하기 JAVA 풀이

정수를 나선형으로 배치하기문제 설명양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n^2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.제한사항1 입출력 예아이디어방향을 분류(상하좌우) 한다.분류한 방향의 다음에 값이 있는지 체크, 방향 전환 처리 주의풀이class Solution { public int[][] solution(int n) { int[][] answer = new int[n][n]; int col = 0; int row = 0; // 방향 - e: 우, s: 하, w: 좌, n: 상 String direction = "e..

알고리즘 2024.10.02

[프로그래머스] PCCP 기출문제 - 동영상 재생기 JAVA 풀이

동영상 재생기문제 설명당신은 동영상 재생기를 만들고 있습니다.당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다.각 기능이 수행하는 작업은 다음과 같습니다.10초 전으로 이동:사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.10초 후로 이동:사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.오프닝 건너뛰기:현재 재생 위치가 오프..

알고리즘 2024.10.01

[BOJ-1641] 도서관 JAVA 풀이

도서관문제세준이는 도서관에서 일한다.도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다.세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다.각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오.세준이는 한 걸음에 좌표 1칸씩 가며, 책의 원래 위치는 정수 좌표이다.책을 모두 제자리에 놔둔 후에는 다시 0으로 돌아올 필요는 없다.그리고 세준이는 한번에 최대 M권의 책을 들 수 있다.첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다.둘째 줄에는 책의 위치가 주어진다.N과 M은 50보다 작거나 같은 자연수이다.책의 위치는 0이 아니며, 절댓값은 10,000보다 작거..

알고리즘 2024.09.30