목록Algorithm-프로그래머스 (8)
HS_development_log
1. 문제 2018 KAKAO BLIND 캐시 2. 접근 LRU 캐시 교체 알고리즘을 구현하면 된다. 간단하게 if else문으로 구분해 주면 되는데 cache hit 라면 1만큼 시간을 더해주고, cache miss면 5만큼 시간을 더해준 뒤 사후 처리를 해주면 되는데 만약 cache 공간이 남아 있다면 그냥 추가를 해주면 되고, cache에 남은 공간이 없다면 가장 사용한 지 오래된 데이터를 바꿔주면 된다. 나는 데이터와 데이터가 들어온 순서를 같이 관리하기 위해 HashMap을 사용했다. 3. 코드 import java.util.*; public class Main { public static void main(String[] args) { int cacheSize = 3; String[] citi..
1. 문제 2019 KAKAO BLIND 블록 게임 2. 접근 기본적으로 배열을 완전 탐색하는 문제라고 생각했다. 2.1 첫 번째 시도 처음에는 모든 세로줄을 한개씩 검사해서 한 개의 행씩 1x1 블록을 놓은 뒤, 블록이 지워지는지 확인해보려고 했다. 1x1 블록을 -1로 두고 나머지 블록과 검사를 진행했는데 이게 자꾸 예외도 많이 나고 1x1블록끼리 사라지고 난리가 나서 포기했다.. 물론 이 방법으로도 문제가 풀린다. 내 구현력이 떨어지는 듯... 2.2 두 번째 시도 어차피 1x1 블록은 위에서 떨어지므로 애초에 지워질 수 있는 블록의 모양은 정해져 있다. 위에서 블록을 떨어뜨렸을 때 직사각형을 만들 수 있는 블록만 삭제할 수 있다. 그런 블록은 빨강 3번, 빨강 4번, 주황 2번, 주황 3번, 파랑..
1. 문제 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 2. 접근 주어진 LZW압축 과정을 그대로 따라가면 되기 때문에 크게 어려운 점은 없었다. 색인번호와 단어가 짝을 이뤄서 저장되기 때문에 HashMap을 활용했다. contains도 O(1)로 빠르기도 하고.. 만약 map에 포함되어 있지 않다면 map에 추가하고 포함되어있다면 그걸 그대로 사용했다. 3. 코드 import java.util.ArrayList; import java.util.HashMap; class Solution { public int[] solution..
1. 문제 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙�� programmers.co.kr 2. 접근 배열의 모든 인접 요소를 확인해야 되는 완전 탐색 문제다. 하나의 요소를 기준으로 아래, 오른쪽, 오른쪽아래 대각선만 확인하는 방식으로 탐색을 진행했다. 배열의 크기가 M*N이므로 M-1,N-1까지만 반복문을 돌리면 됐다. i) 만약, 조건을 만족해서 지울 수 있는 블록을 발견할 경우 바로 지우지 않고 위치만 기억해 두고 끝까지 탐색을 계속했다. 탐색하는 도중 지워버리면 다른 인접 요소에 영향을 받아 예외가 생길 수 ..