Algorithm 78

[Algorithm] 프로그래머스 디스크 컨트롤러

코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 1. 실행이 가능한 작업 중에서 소요 시간이 적은 작업부터 진행한다. 2. 실행이 가능하지 않은 작업은 작업 시작 시간 순으로 정렬하고 꺼내 실행 가능한 작업으로 보낸다. 위의 조건을 맞추기 위해, 작업 시작 시간과 작업 소요 시간을 멤버변수로 갖는 Work 객체를 생성한다. 그리고 각각의 조건으로 정렬되고, 앞에서부터 꺼내서 사용할 수 있는 우선순위 큐를 사용한다. 작업 목록에 모든 작업을 저장한다. 먼저 현재 시간 0초부터 시작한다. 작업 목록에서..

Algorithm 2021.07.05

[Algorithm] 프로그래머스 더 맵게

코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 1. 스코빌지수는 항상 오름차순으로 관리되어야 한다. (PriorityQueue 사용) 2. 가장 낮은 스코빌 지수가 K보다 작을 경우 로직을 수행한다. 3. pq에서 가장 낮은 지수와 그 다음 낮은 지수를 꺼내 연산 후 다시 넣는다. 4. pq에 1개의 지수만 남았는데도 K보다 작을 경우 더 이상 수행이 불가능한 것으로 판단해 -1을 리턴해 종료시킨다. 전체 소스코드 import java.util.*; class Solution { publi..

Algorithm 2021.07.04

[Algorithm] 프로그래머스 H-index

코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 풀이 1. H-index는 n편의 논문에서 h번 이상 인용된 논문이 h편 이상인 경우 중 최대값이 되는 h다. (h번 이하에 대한 조건도 있었는데, 사실 필요 없어 보인다.) 2. 먼저 인용횟수를 정렬한다. 3. 논문 전체 n편을 기준으로 n, n-1, n-2, ... , 0번 인용된 것(h번)으로 내려오면서 몇 편이 인용되었는지, h편 이상인지 확인했다. 전체 소스코드 import java.util.*; class Solutio..

Algorithm 2021.07.03

[Algorithm] 프로그래머스 K번째 수

문제 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 1. 커맨드 별로 진행한다. 2. 배열의 i번째부터 j번째까지 리스트에 담고 정렬한다. k번째 수를 정답 배열에 추가한다. 3. 로직이 시작될 때, 이전 연산이 남지 않도록 리스트를 비운다. 전체 소스코드 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; List list = new ArrayList(); for (int i = 0;..

Algorithm 2021.07.02

[Algorithm] 프로그래머스 소수 찾기

코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 1. 주어진 문자열로 된 숫자에서 만들 수 있는 모든 숫자를 구함. (순열) 순열 알고리즘으로 가능한 모든 숫자를 만듦. 중복 가능성으로 Set에 저장하고 다시 리스트로 만듦. 2. 만들어진 숫자에 대해서 소수 판별 알고리즘 사용 소수 판별을 0과 1은 소수가 아니다. 2부터 숫자의 제곱근 까지의 수로 나눴을 때, 나눠떨어지지 않아야 한다. 전체 소스코드 import java.util.*; class Solution { public Set s..

Algorithm 2021.07.01

[Algorithm] 프로그래머스 모의고사

코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 파이썬으로 풀었던 문제를 자바로 다시 풀어봤다. 패턴 3가지에 대해서 연산을 통해 맞힌 숫자를 계산했고, 패턴 중 가장 많이 맞은 개수를 max로 저장했다. 그리고 max와 같은 값을 갖는 것들의 인덱스를 저장한다. 같은 경우 오름차순으로 출력해야 하기 때문에 정렬, 그리고 배열로 출력한다. 전체 소스코드 import java.util.*; class Solution { public int[] solution(int[] answers) { int[][] p..

Algorithm 2021.06.30

[Algorithm] 프로그래머스 카펫

코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 풀이 브라운의 개수와 옐로우의 개수가 주어졌을 때, 전체 타일의 가로, 세로와의 관계를 생각하면 답을 구할 수 있다. 1. 브라운 + 옐로우 = 가로 * 세로 2. 브라운 = (가로 + 세로) * 2 - 4 => 브라운이 카펫을 감싸고 있음 가로 + 세로 = (브라운 + 4) / 2 이에 세로가 가로보다 작기 때문에 세로를 1부터 늘려가면서 해당 조건에 맞는지 확인한다. 전체 소스코드 class Solution { public int[] solution(in..

Algorithm 2021.06.29

[Algorithm] 프로그래머스 단어 변환

코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 풀이 1. 단어가 주어진 배열에 대해서 DFS를 통해 beign이 target과 같아지는 지점을 찾는다. 2. DFS를 통해 재귀가 가능한 조건은 전에 방문하지 않았던 단어이어야 하며, 철자 하나만 다른 경우 (visited 테이블 구성, 철자 하나만 다른지 확인하는 로직 구현) 3. 여러가지 경우가 나올 수 있으니 최소값으로 갱신하도록 한다. 전체 소스코드 class Solution { public int min = ..

Algorithm 2021.06.27

[Algorithm] 네트워크

코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 1. visited 테이블을 만든다. (방문처리) 2. computers 그래프를 탐색하면서 연결되어 있고 아직 방문하지 않은 노드에 대해서 연결된 노드를 모두 방문처리하도록 한다. (하나의 네트워크로 인식) 3. 하나의 네트워크를 방문처리 하면 네트워크 갯수 +1 class Solution { public boolean[] visited; public int cnt = 0; public void dfs(int[][] computers, int x) ..

Algorithm 2021.06.26
반응형