프로그래머스 - 택배상자 (Stack과 함께 구현하기)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/131704# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해컨베이어 벨트에는 1번부터 n번까지 상자가 순서대로 놓여 있고, 제시된 순서대로 트럭에 상자를 실어야 한다.만약 원하는 순서가 아니면, 상자를 스택 구조의 보조 컨베이어에 임시로 보관한다.트럭에 실을 수 없는 상황이 오면 작업을 종료한다.접근 방법메인 컨베이어에서 상자를 순서대로 확인한다.현재 트럭이 원하는 상자라면 즉시 싣는다.아니라면 보조 컨베이어에 push한다.상자를 하나 처리할 때마다 보조 컨베이어의 top이 트럭이 원하는 상자인지 확..
프로그래머스 - 땅따먹기 (DP로 하위 문제 계산 줄이기)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해땅따먹기 게임의 땅은 N행 × 4열의 형태로 주어진다.각 칸에는 점수가 적혀 있으며, 위에서부터 한 행씩 내려오면서 한 칸씩 밟아야 한다.조건은 다음과 같다.같은 열은 연속해서 밟을 수 없다.마지막 행까지 도착했을 때의 최대 점수를 구한다.제한 조건은 다음과 같다.N ≤ 100,000각 점수는 100 이하 자연수 접근 방법처음에는 DFS로 모든 경로를 탐색하는 방식이 떠올랐다. (실제 DFS로 구현해도 입출력 예시는 통과한다)그러나 경로 수는 매..
프로그래머스 - 압축 (slice로 자르기)
·
Learn/Algorithm
http://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해주어진 문자열을 LZW(Lempel–Ziv–Welch) 알고리즘으로 압축한 결과를 출력하는 문제이다.LZW는 사전에 없는 가장 긴 문자열을 기준으로 압축하는 방식이며, 압축된 결과는 사전의 색인 번호 배열로 표현된다. 접근 방법문제 해결의 핵심 과제는 두 가지:색인 사전 생성'A'부터 'Z'까지 26개의 단어를 1~26번 색인으로 초기화한다.LZW 압축 알고리즘 구현문자열을 순차적으로 탐색하며, 가장 긴 w를 찾아 출력하고, 새로운 w+c를 사전에..
프로그래머스 - 뉴스 클러스터링 (다중집합의 교집합/합집합 구하기)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해두 문자열을 두 글자씩 끊어 다중집합으로 만든 뒤, 자카드 유사도를 계산하는 문제이다.유효한 원소는 알파벳 문자로만 이루어진 쌍이며, 대소문자는 구분하지 않는다.자카드 유사도는 교집합 크기를 합집합 크기로 나눈 값으로 정의되며, 두 집합이 모두 공집합일 경우 유사도는 1로 정의한다. 접근 방법일반 집합에서는 원소의 중복을 고려하지 않지만, 본 문제에서는 다중집합의 성질을 따라야 한다.이때 단순 배열 비교로는 동일 원소가 여러 번 등장할 때 인덱스..
프로그래머스 - 뒤에 있는 큰 수 찾기 (monotonic stack)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해정수 배열 numbers가 주어진다. 각 원소에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까운 수를 "뒷 큰 수"라고 한다.모든 원소의 뒷 큰수를 차례대로 구하여 배열로 반환한다. 뒷 큰수가 존재하지 않는 원소는 -1을 반환한다.예시[2, 3, 3, 5] → [3, 5, 5, -1][9, 1, 5, 3, 6, 2] → [-1, 5, 6, 6, -1, -1] 풀이 1: 단순 이중 for문각 원소마다 뒷 큰수를 찾을 때까지 뒤..
프로그래머스 - 캐시 (queue로 LRU 알고리즘 구현하기)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해지도 검색 서비스에서 도시 이름을 검색하면 관련 데이터를 DB에서 가져와야 한다. DB 접근 비용이 크므로 캐시를 적용해 성능을 개선하려 한다.캐시는 LRU(Least Recently Used) 정책을 따른다.Cache hit 시 실행시간 = 1Cache miss 시 실행시간 = 5Cache 교체는 가장 오래 사용되지 않은 데이터를 제거한다. 접근 방법도시 배열을 순회하며 캐시에 존재하는지 확인하면 되겠다.Hit이면 실행시간 +1, 캐시에서 제거..