문제 올바른 괄호와 동일한 방식으로 풀이할 수 있는 문제이다. 풀이과정 자료구조 Stack을 이용하여 풀이를 진행한다. 주어진 String을 순회하며 각 char에 대해 다음을 수행한다. stack이 비어있으면 stack에 해당 char를 push한다. stack의 가장 위에 있는 char와 현재 순회중인 char가 서로 다르면 stack에 push한다. 그렇지 않으면 stack에서 pop한다. 최종적으로 stack이 비어있는지 여부를 확인하여 결과를 반환한다. 비어있다면 문자열을 주어진 조건에 맞게 모두 제거할 수 있음을 의미한다. Code import java.util.Stack; class Solution { public int solution(String s) { Stack stack = new ..
문제 : programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 먼저, 각 학생별 체육복 도난 및 여분 보유 여부를 정리한다. 각 학생들의 체육복 보유 수량을 나타내는 정수 배열을 선언하고 그 값을 모두 1로 초기화한다. (시작시점에는 모든 학생이 체육복을 가지고 있다.) 도둑질 당한 학생들의 번호에 해당하는 원소들에서 1씩 뺀다. 여분 체육복을 가지고 온 학생들의 번호에 해당하는 원소들에 1씩 더한다. 이후, 맨 앞 학생부터 차례..
문제 : programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 두 개의 Priority Queue를 사용하여 하나는 오름차순으로, 다른 하나는 내림차순으로 정렬하여 구현한다. 이 때, 별도로 원소의 갯수를 counting 하는 size 변수를 두어 size가 0이 되면 두 queue를 모두 clear 해 주어야 한다. 만일 이 과정을 넣어주지 않으면 다음과 같은 문제가 발생할 수 있다. 가정 : 이중 우선순위 큐 (이하 dpq)는 1, 2, 3을 원소로 가지고 있다. 전개 최솟값을 두 번 poll 한다. = 오름차순으로 정렬된 priority queue (이하 minQueue)에서 두 번 poll 한다. ..
문제 : programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr "작업의 요청부터 종료까지 걸린 시간의 평균"을 최소화 하기 위해서는 Shortest Job First로 Job scheduling을 해 주어야 한다. 또, 문제에 주어진 조건에서 하드디스크가 idle 상태일 때에는 먼저 들어온 작업부터 처리해야 하므로 이 부분도 같이 고려해야 한다. 이는 두 개의 priority queue를 사용하여 해결할 수 있다. 이 두 ..
문제 : programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 주어진 scoville array를 priority queue에 넣기만 하면 쉽게 해결되는 문제 소스코드 import java.util.PriorityQueue; class Solution { private int count = 0; public int solution(int[] scoville, int K) { PriorityQueue pq = new ..
문제 - 프로그래머스 "여행경로" 풀이 과정 주어진 공항의 이름을 오름차순 정렬한다. 이동 가능한 경로가 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'가 각각 어떤 알파벳으로 변할 수..
문제 : 모의고사 - 프로그래머스 풀이과정 풀이를 진행하기 위해 먼저 Student 클래스를 만든다. 각 Student 클래스의 인스턴스(수포자)는 자신이 찍는 방법을 가지고 있다. 시험 문제의 정답지가 주어지면 자신이 찍는 방법과 비교하여 채점을 진행할 수 있다. 최종 점수를 가지고 있다. 이후 진행 과정은 아래와 같다. 주어진 수포자 정보에 따라 Student 클래스의 인스턴스들을 생성한다. 1에서 만들어진 인스턴스들(수포자들)에게 채점을 진행시킨다. 최고점수를 확인한다. 최고점수와 동일한 점수를 가진 학생들을 찾아 반환한다. 풀이 자체는 간단하게 진행할 수 있지만, Student 클래스를 생성하면서 어디까지가 Student 클래스 내로 들어가야 하는 역할이고, 어디부터가 그렇지 않은지를 생각하는 것..
- Total
- Today
- Yesterday
- Queue
- java
- 연습문제
- 완전탐색
- Sorting
- dynamic programming
- Heap
- programmers
- BFS
- 탐욕법
- 멀리 뛰기
- 데브코스
- 알고리즘
- 프로그래머스
- 동적계획법
- 백준
- 정렬
- greedy
- Algorithm
- stack
- DP
- 해시
- 힙
- 그래프
- dfs
- Hash
- 자바
- 자료구조
- 큐
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |