본문 바로가기

전체 글

(430)
제목을 짓자(2020.10.31) 제목을 갑자기 왜 짓게 됐냐면..별일없는 내이야기_xxxxxxxx로 다 지어놓으니까 구분이 잘 안된다...그리고 제목 짓는 재미도 있을 거 같아서 앞으로 일상 이야기에 제목을 지어볼까 한다. 약 한달 정도만에 다시 쓰게 됐는데 그동안 많은 일들도 있었고 그래서 조금 여유가 있어져서 한 번 써본다! 생존신고원래 주변에 연락을 적극적으로 하는 편은 아니다(그래서, 늘 욕을 많이 먹는다. 연락좀 하라고).근데, 이게 참 고치기 쉽지 않다. 잠도 많은 편이고, 나중에 해야지 하면서, 다른 일들을 하다보면 또 까먹고, 아 내일 해야지 하다가 또 까먹고... 그렇게 아 다음에 해야겠다 하고 잊는다. 연락을 해준 친구들에게는 참 못된 생각이다. 그래서 최근에 고치려고 나름(정말..) 노력을 하는 중이다. 여튼 연락 ..
프로그래머스 - 이중우선순위 큐(Java, LV3) https://programmers.co.kr/learn/courses/30/lessons/42628?language=java 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 우선순위큐(heap)을 오름차순, 내림차순(Collections.reverseOrder()) 기준으로 하나씩 만든다 삽입의 경우 두 heap에 각각 넣어준다 최대값 삭제의 경우 내림차순 우선순위큐에서 최대값을 찾아서 두 heap에 remove 한다 최소값 삭제의 경우 오름차순 우선순위큐에서 최솟값을 찾아서 두 heap에 remove 한다 결과값을 출력하는데 heap이 empty가 아닐 경우에만 값을 넣어 출력한다 import java.util.*; class Solution { public int[] solu..
프로그래머스 - 디스크 컨트롤러(Java, LV3) / Heap https://programmers.co.kr/learn/courses/30/lessons/42627?language=java 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 Job 들에 대해서 시간이 빠른순으로 정렬(같을 경우 짧은 시간 순) Job 들을 작업시간이 짧은 순으로 우선순위 큐에 보관한다 현재 시간(t) 기준으로 작업수행이 가능한 Job들을 우선순위 큐에 넣고 반복문을 통해서 하나씩 꺼내서 수행한다 수행한 뒤 다시 현재 시간을 경과된 작업시간만큼 더해주고 다시 작업수행이 가능한 Job..
프로그래머스 - 카카오프렌즈 컬러링북(Java, 2017카카오) https://programmers.co.kr/learn/courses/30/lessons/1829?language=java 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이 전체 그래프에서 탐색할 영역 중 영역 0(배경색)을 제외한다 그래프 중 방문하지 않은 곳을 찾아서 그곳을 시작점으로 같은 색으로만 DFS 탐색을 한다. DFS 탐색을 하면서 영역의 수를 count하고, count한 영역이 최대영역 크기보다 크면 갱신한다. DFS 가 끝나면 전체 그래프 중에서 다시 탐색하지 않은 곳을 찾아서 DFS 탐색..
프로그래머스 - 소수 찾기(파이썬, LV2, 완전탐색) https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3# 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 파이썬의 itertools의 permutation을 통해서 쉽게 구현이 가능했다. 먼저 모든 순열을 다 고려하는데, 만들어진 순열 String을 Integer로 변경하고 해당 Integer가 소수 Prime 인지 체크해서 개수를 카운트해주면 된다. 이 때, 중복 값 방지를 위해 개수 카운트 시 집합을 활용한다...
프로그래머스 - 문자열 압축(Java, 2020 카카오) https://programmers.co.kr/learn/courses/30/lessons/60057# 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 풀이 전체 문자열 길이가 1000 밖에 안되기에 O(N^2)로 풀어도 상관없음 주어진 조건을 따라서 구현하기 문자열을 길이 기준(i)을 1
프로그래머스 - 삼각 달팽이(Java, LV2) https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 풀이 쉬운 문제처럼 보였으나 규칙성을 찾는데 생각보다 오래걸렸다... 수학 규칙을 추론하고 검증하는데 조금 무뎌진거 같은 느낌이었다. 기본적으로 전체 큰 삼각형의 특성을 살펴보면 된다. 왼쪽아래 대각선으로 내려오거나(Down) 오른쪽으로 지나가거나(Side) 왼쪽위 대각선으로 올라가거나(Up) 세 가지 중 하나이다. 그리고 각 방향의 길이는 n, n-1, n-2, ....
프로그래머스 - 스킬트리(Java, LV2) https://programmers.co.kr/learn/courses/30/lessons/49993?language=java 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 주어진 skill_tree String 배열에 대해서 주어진 skill String 만큼 반복문을 돌면서 탐색한다. skill 순서에 따라 검사하는데 선행스킬과 후행스킬의 순서를 고려한다. 1) 선행 스킬을 배우지 않고 후행 스킬을 배운 경우 -> 비정상 2) 선행 스킬을 후행 스킬 뒤에 배운 경우 -> 비정상 class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; // skil의 값들을 skill_tree에..