문제 : programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 아이디어 1. 장르 데이터 정리 Map 변수를 사용하여 각 장르별 총 재생수를 계산한다. 장르 명, 총 재생수를 멤버 변수로 가지는 Genre class를 정의하고, Comparable을 implements 하여 총 재생수를 바탕으로 Genre끼리 대소비교가 가능하도록 해 준다. 이 때, 내림차순으로 정렬될 수 있도록 한다. 위 Map에 만들어놓은 정보를 바탕으로 ..
문제 : programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 정렬 이용 participant, completion array를 정렬한다. 첫 번째 원소부터 차례대로 서로 다른 원소(이름)가 나올 때 까지 진행한다. 서로 다른 원소가 나오면 이 때의 participant의 원소를 반환한다. Map 이용 participant array로 부터 각 이름별 참가자의 수를 업데이트한다. co..
문제 - 프로그래머스 "여행경로" 풀이 과정 주어진 공항의 이름을 오름차순 정렬한다. 이동 가능한 경로가 2개 이상일 경우 알파벳의 오름차순으로 경로를 결정하기 위해 사용한다. 이름의 오름차순 정렬한 공항들에 index를 설정한다. 이 [이름 - index] 관계는 주어진 티켓에 따른 각 공항별 잔여 방문 횟수를 나타내는 2차원 배열을 나타내기 위해 사용한다. 위 1과 2에서 준비한 결과물을 바탕으로 출발/도착 공항별 잔여 방문 횟수를 2차원 배열로 나타낸다. 문제에서 주어진 예제 1번의 경우 아래의 표와 같이 나타낼 수 있다. DFS 방식으로 방문할 공항을 탐색한다. 최종 결과물을 주어진 조건에 맞게 공항의 이름으로 변경하여 반환한다. DFS 전개 주어진 출발공항을 현재까지 확인한 여행경로 Queue에..
문제 : 단어 변환 - 프로그래머스 풀이과정 문제에서 주어진 조건은 다음과 같다. 한 번에 한 개의 알파벳만 바꿀 수 있다. words에 있는 단어로만 변환할 수 있다. 이 조건으로부터 우리는 매 턴 마다 현재 단어에서 바뀔 수 있는 단어들을 찾아낼 수 있다. 예를 들어, 문제에서 주어진 예시를 보면, begin 으로 "hit"가 주어졌으며, words로는 ["hot", "dot", "dog", "lot", "log", "cog"]가 주어졌다. "hit"에서 변화할 수 있는 알파벳은 'h', 'i', 't' 셋 중 하나이다. 여기서 words에 있는 단어들로부터, 'h', 'i', 't'가 각각 어떤 알파벳으로 변할 수..
네트워크 풀이과정 모든 컴퓨터는 자기자신에 대해서 연결됨 상태로 주어지는 것을 이용한다. 기본적인 골자는 다음과 같다. (i, i) 번 째 좌표에서 탐색을 시작한다. 탐색 시작시마다 이미 해당 컴퓨터를 확인했음을 표시한다. i번 째 row를 통해 연결되어있는 컴퓨터들을 모두 확인한다. 연결된 컴퓨터들의 번호를 k라 할 때 (k, k)번 째 좌표에서 다시 탐색을 시작한다. (DFS) 이미 확인되었음 표시가 있다면 스킵하고, 그렇지 않다면 그대로 진행한다. 1번 과정에서 한 번 빠져나올 때 마다 식별한 네트워크의 갯수를 1 증가시킨다. 더이상 탐색할 컴퓨터가 없으면 모든 탐색을 종료하고 식별된 네트워크의 총 갯수를 반환한다. 시나리오 n = 7 이고, 1-2-3과 4-5-6 및 7 으로 세 개의 네트워크를 ..
타겟 넘버 풀이과정 문제에 주어진 예제 2번을 살펴보면 다음과 같은 그림을 그릴 수 있다. (주어진 조건 : numbers = {4, 1, 2, 1}, target 4) 0에서부터 주어진 숫자들을 +, - 해 나가는 Tree를 만든 후(BFS) 최종 결과값을 확인하며 target과 일치하는 것의 갯수를 세면 정답을 찾을 수 있다. Code import java.util.ArrayDeque; import java.util.Queue; class Solution { public int solution(int[] numbers, int target) { Queue queue = new ArrayDeque(); queue.offer(0); for (int number : numbers) { int size = ..
문제 : 모의고사 - 프로그래머스 풀이과정 풀이를 진행하기 위해 먼저 Student 클래스를 만든다. 각 Student 클래스의 인스턴스(수포자)는 자신이 찍는 방법을 가지고 있다. 시험 문제의 정답지가 주어지면 자신이 찍는 방법과 비교하여 채점을 진행할 수 있다. 최종 점수를 가지고 있다. 이후 진행 과정은 아래와 같다. 주어진 수포자 정보에 따라 Student 클래스의 인스턴스들을 생성한다. 1에서 만들어진 인스턴스들(수포자들)에게 채점을 진행시킨다. 최고점수를 확인한다. 최고점수와 동일한 점수를 가진 학생들을 찾아 반환한다. 풀이 자체는 간단하게 진행할 수 있지만, Student 클래스를 생성하면서 어디까지가 Student 클래스 내로 들어가야 하는 역할이고, 어디부터가 그렇지 않은지를 생각하는 것..
문제 : programmers.co.kr/learn/courses/30/lessons/42747?language=java 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 아이디어 Insertion sorting 방법을 이용하기 n개의 논문 중 h회 이상 인용된 논문이 h개 이상일 때 그 h-index는 h이다. 따라서 h-index 값은 0 이상, n 이하가 된다. citations array를 역순으로 sorting 한 뒤, h값의 후보로 n부터 0까지(=candidate) ..
- Total
- Today
- Yesterday
- BFS
- DP
- 동적계획법
- dfs
- 자료구조
- 프로그래머스
- Sorting
- Heap
- Algorithm
- 백준
- 힙
- 자바
- 그래프
- Hash
- stack
- 완전탐색
- dynamic programming
- greedy
- 알고리즘
- 멀리 뛰기
- 탐욕법
- 코딩테스트
- programmers
- 연습문제
- 해시
- java
- 정렬
- Queue
- 데브코스
- 큐
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |