본문 바로가기

분류 전체보기

(385)
Elasticsearch란 무엇인가? Apache Lucene 기반으로 구축된 분산형 검색 및 분석 엔진, 확장 가능한 데이터 저장소 라고 공식문서에서는 소개하고 있다. 그런데 그래서 이게 무슨말인데?Apache Lucene매우 강력한 풀텍스트 검색 엔진 라이브러리로, 빠르고 효율적인 텍스트 검색을 가능하게 하는 다양한 알고리즘과 기능을 제공한다.엘라스틱서치는 이 루씬을 더 사용하기 쉽게 사용할 수 있도록 API로 감싸고 대용량 데이터를 다루기 위한 분산 처리 기능을 추가한 제품이라 생각할 수 있다.역색인(Inverted Index)검색 속도를 높이기 위해 사용되는 데이터구조로 문서에서 각 단어가 나오는 위치를 기록해서 특정 키워드가 포함된 문서를 빠르게 찾아낼 수 있다.
프로그래머스 - 기지국 설치(C++) https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 이분탐색을 의심했다. 새로 설치할 기지국의 개수를 정해놓고 체크하는 방식의 문제가 백준에 존재하기 때문이다. 그렇게도 할 수는 있지만 이 문제의 n은 무려 2억으로 반드시 O(N) 이하로 처리해야 정답이다.  이 문제의 핵심은 저 회색칸을 배열로 만드는 것이다. 그리고 그 회색칸을 주어진 기지국이 커버할 수 있는 값을 계산하면 된다. 2 * w + 1 이 하나의 기지국이 커버할 수 있는 범위..
프래그래머스 - 오랜 기간 보호한 동물(1)(SQL) https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr JOIN 으로 분류되어 있지만 여집합을 구하는 문제와 같다. 여러 개의 컬럼에서 존재하지 않는 것을 골라내고 싶을 때 NOT IN 구문을 사용할 수 있다.반대로 존재하는 것을 골라내고 싶으면 IN 구문을 사용할 수 있다. -- 코드를 입력하세요SELECT NAME, DATETIME FROM ANIMAL_INSWHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID ..
카테고리 별 도서 판매량 집계하기 - SQL https://school.programmers.co.kr/learn/courses/30/lessons/144855 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 두 테이블에서 각각 요소를 가져와야할 경우의 문제이다. 먼저 SQL의 처리 순서를 기억하자  FROM: 데이터를 조회할 테이블이나 뷰를 결정하고, 필요하면 조인(join)이나 서브쿼리를 통해 데이터를 결합합니다.WHERE: 필터링 작업이 이 단계에서 이루어집니다. 주어진 조건에 맞는 행만을 선택합니다.GROUP BY: 데이터가 그룹화되는 단계입니다. 같은 값을 가진 행들을 그룹으로 묶습니다.HAVI..
조건별로 분류하여 주문상태 출력하기 - SQL https://school.programmers.co.kr/learn/courses/30/lessons/131113 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr SQL 코딩테스트를 대비해서 SQL도 풀려고한다. 진작했어야하는데 대체 뭐했지? 지난날의 대한 후회는 접어두고 지금부터 열심히 하도록 하자. 이 문제는 출력해야할 열을 SELECT 하는것이 아니라 조건에 따른 열 값을 넣어야한다. 어떻게 해야할지 몰라서 찾아보니 CASE를 사용하면 된다고 한다. CASE 구문은 보통 SELECT에 사용되며 WHERE에도 사용할 수 있다. 이 문제는 CASE 구문만 ..
프로그래머스 - 전화번호 목록(Java) https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 123412321 이렇게 들어온다고 가정했을 때 가장 짧은 길이만큼 모두 잘라서 셋에 넣어놓고 판단하면 된다고 생각했다. 그러나 다음과 같은 반례가 존재한다. 122342345 내 풀이대로 하면 위의 값들은 12, 23, 23 으로 해시값에 들어가 false라고 답할것이다. 사실은 그렇지 않은데 말이다. 완전히 잘못된 로직이다. 그런데 제출했을 때 2가지 케이스 빼고 다 맞아서 어딘가 실수가 ..
백준 8901번 - 화학 제품 (Java) https://www.acmicpc.net/problem/8901 AB, BC, CA를 만들 수 있는 모든 경우의 수를 확인해봐야하기 때문에 이 문제는 완전탐색 문제로 분류된다.AB를 0개 만들었을 때, BC를 0개 만들었을 때 -> CA가 만들어지는 개수가 정해진다.그러므로 AB를 가능한 만큼 만들어보고 각 경우의 수를 만들어보면 된다. A = 4B = 3C = 5 가 있다고 가정하자.  AB 는 B가 3이므로 3개까지 만들 수 있다.AB의 개수가 0이면 BC는 3개를 만들 수 있다. B를 사용하지 않았기 때문이다. BC를 0개 만들었다면 CA는 4개BC를 1개 만들었다면 CA는 3개BC를 2개 만들었다면 CA는 2개BC를 3개 만들었다면 CA는 1개 만들어낼 수 있다.  그리고 AB를 만들어낼 수 있..
백준 2651번 - 자동차경주대회 (Java) https://www.acmicpc.net/problem/2651 그리디로 풀자니 이전의 값을 계속 다시 사용해야한다.완전탐색을하면 2^100 승으로 당연히 시간초과다. 그래서 이 문제는 다이나믹 프로그래밍을 사용해야한다. DP 문제들은 다 그렇지만 1차원으로 해결가능한지? DP배열에 무슨 값을 넣어야하는지? 가 중요하다. 그리고 DP값에는 거의 모든 문제에서 정답이 들어간다는 것을 다시 한 번 명심하자. 즉,  DP[N] = N 지점까지 최소 정비로 올 수 있는 경우가 된다. 정비를 받지 않고 한번에 오는 것이 당연히 시간적으로는 손해가 안난다. 4지점의 경우, 1,2,3 에서 4까지 올 수 있다. 그리고 1,2,3에서 4까지 올수 있는 경우의 수는 다음과 같다. 1. 정비를 받고 올 수 있음2. 올 ..