문제 : 단어 변환 - 프로그래머스 풀이과정 문제에서 주어진 조건은 다음과 같다. 한 번에 한 개의 알파벳만 바꿀 수 있다. 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) ..
문제 : programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 아이디어 서로 이어 붙였을 때 더 큰 수를 만들기 위해 다음과 같은 방법을 사용하였다. 문제에서 주어진 조건에 의해 배열의 각 원소는 [0, 1000]의 범위를 가지므로, 각각의 원소가 모두 네 자릿수가 되도록 반복해서 이어붙여준 reformattedValue를 만들었고, 이를 기준으로 주어진 배열을 내..
문제 : programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 코드 import java.util.ArrayList; import java.util.List; import java.util.Stack; public class StockPrice { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; //..
문제 : programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제를 처음 읽을 때에는 단순히 priority queue 를 사용하여 해결하는 문제인 것 처럼 보였다. 하지만 내장된 PriorityQueue를 사용하려고 하면 다음과 같은 문제를 맞닥뜨리게 된다. 동일한 priority를 가지는 elements의 순서가 unstable 하다. 하나의 element를 poll 했을 때, 이 element보다 높은 priority를 가지..
- Total
- Today
- Yesterday
- 백준
- Algorithm
- programmers
- 그래프
- 동적계획법
- 완전탐색
- greedy
- BFS
- Hash
- 프로그래머스
- Heap
- 해시
- 정렬
- Queue
- 자료구조
- 힙
- 자바
- java
- 탐욕법
- DP
- 데브코스
- stack
- dynamic programming
- 멀리 뛰기
- 연습문제
- 코딩테스트
- dfs
- 큐
- Sorting
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |