본문 바로가기

알고리즘

(7)
알고리즘 / Java / 프로그래머스 - 다리를 지나는 트럭 프로그래머스 - 다리를 지나는 트럭 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 문제 해설 기다리고 있는 트럭들의 큐와 다리를 지나고 있는 트럭들의 큐, 이렇게 2개의 큐를 만들어 놓으면 쉽게 해결할 수 있습니다. 그리고 각자의 상태관리를 위해 Bridge 객체와 Truck 객체를 만들어 주었습니다. 정답 코드 import java.util.LinkedList; import java.util.Queue; class Solution { class Bridge { //다리가 감당할 수 있는..
알고리즘 / Java / 프로그래머스 - 여행경로 프로그래머스 - 여행경로 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 문제 해설 이번 문제는 조금 까다로운 조건이 하나 있습니다. 경로는 2개 이상일 수 있다. 2개 이상인 경우 알파벳 순서가 앞서는 경로를 return 한다. 그래서 전략은 다음과 같습니다. 1. 경로정보를 가지고 있는 객체를 사용할 것이다. 2. 가능한 경우의 객체를 우선순위큐에 넣고 정의해준 compareTo 메서드에 따라 알파벳 순서가 앞서는 경로를 return 한다. 정답 코드 import java.util.ArrayList; import java.uti..
알고리즘 / Java / 프로그래머스 - 단어 변환 프로그래머스 - 단어 변환 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 문제 해설 Word 객체를 만들면 쉽게 해결할 수 있습니다. Word 객체는 다음 정보를 가지고 있습니다. class Word { //현재 단계의 단어 private String currentWord; //몇번 바꿨는지 private int count; //어떤 경로를 거쳐 왔는지 private boolean[] isVisits; public Word(String currentWord, int..
알고리즘 / Java / 2020 카카오 블라인드 / 가사 검색 카카오 블라인드 테스트 - 가사 검색 코딩테스트 연습 - 가사 검색 programmers.co.kr 문제의 자세한 정보는 위 링크를 참고해주세요. 알고리즘 / 2020 카카오 블라인드 테스트 / 가사 검색 문제 정리 문제의 요지는 간단합니다. words 배열이 있고, queries가 주어지면 각 query에 부합하는 word가 몇개있는지 찾는거죠. 언뜻보면 쉬워보이지만, 효율성 테스트를 통과하려면 몇 가지 장치를 마련해야합니다. 문제 해결에 필요한 것 1. 캐싱 검색 키워드 제한사항 queries의 길이(검색 키워드 개수)는 2 이상 100,000 이하입니다. 각 검색 키워드의 길이는 1 이상 10,000 이하로 빈 문자열인 경우는 없습니다. 전체 검색 키워드 길이의 합은 2 이상 1,000,000 이하..
알고리즘 / [java] 2020 카카오 블라인드 테스트 / 괄호 변환 카카오 블라인드 테스트 / 괄호 변환 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 문제의 자세한 정보는 위의 링크에서 확인하시길 바랍니다. 알고리즘 / 2020 카카오 블라인드 테스트 / 괄호 변환 정리하자면 주어진 괄호를 올바른 형태로 바꾸는 문제인데 친절하게도 올바른 형태로 바꾸는 로직을 단계별로 알려주었습니다. 로직을 다시 한번 살펴보죠. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로..
알고리즘 / [java] 주식가격 / 프로그래머스 프로그래머스 주식가격 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제 설명 int 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 입출력 예시 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 풀이 결국 prices의 요소마다 하나씩 꺼내서 해당 요소보다 값이 작은 요소의 값을 찾아 index값 차이를 리턴에 넣어주면 된다. 시작 요소의 in..
알고리즘 / [java] 기능개발 / 프로그래머스 알고리즘 / 기능 개발 / 프로그래머스 문제 : https://programmers.co.kr/learn/courses/30/lessons/42586 import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(int[] progresses, int[] speeds) { // 배포 진행도 int progressCount = 0; // 몇개의 기능이 배포되는지 담을 배열 List answer = new ArrayList(); while (progresses.length - 1 >= progressCount) { // 하루 작업 진행 work(progresses, speeds); // 배포할 기능이 있는지 확..