Coding Test/Coding Test 문제 풀이
-
프로그래머스 (Level 2) - 더 맵게Coding Test/Coding Test 문제 풀이 2021. 12. 28. 16:40
문제 설명 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 주어진 모든 음식들을 조합해서 음식들의 스코빌 지수가 K 이상이 되도록 하는 조합 횟수를 구하는 문제이다. 음식을 조합하기 위한 계산식은 다음과 같다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 스코빌지수가 가장 낮은 음식을 계속해서 조합해야 하기 때문에 우선순위 큐를 사용하기로 했다. 우선순위 큐의 음식들을 조합하면서 모든 음식의 스코빌 지수가 K이상이 되..
-
프로그래머스 (Level 2) - 기능개발Coding Test/Coding Test 문제 풀이 2021. 12. 28. 12:01
문제 설명 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 풀이 문제를 해결하기 위해서 다음과 같이 두 단계로 나누었다. 1. 각 기능이 완료되기까지의 남은 일수를 구한다. 2. 계산한 남은 일수를 통해 배포마다 몇 개의 기능이 배포되는지를 구한다. 첫 번째 단계는 각 기능의 작업 진도와 100과의 차이를 구한 후, 각 기능의 작업 속도로 나머지 연산을 함으로써 쉽게 구할 수 있었다. 두 번째 단계는 List 자료구조를 활용하였으며, 가장 앞에 있는 기능의 남을 일수를 current 변수로 저장하고 배..
-
프래그래머스 (Level 2) - 전화번호 목록Coding Test/Coding Test 문제 풀이 2021. 12. 28. 11:00
문제 설명 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀이 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하는 문제이다. 처음에는 이중 반복문을 통해 전화번호부 내 모든 번호들을 startsWith() 함수를 이용해서 비교하는 방식으로 해결하려고 했었다. 하지만, 시간 효율성을 측정하는 문제여서 이 방법은 적절하지 않다고 생각했다. 전화번호를 비교하기 위해서는 빠른 검색에 유용한 자료구조가 필요했고, HashSet 자료구조를 사용했다. 우선, 전화번호부(phone_..
-
프래그래머스 (Level 1) - 모의고사Coding Test/Coding Test 문제 풀이 2021. 12. 27. 12:10
문제 설명 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 int[] person01 = { 1, 2, 3, 4, 5 }; int[] person02 = { 2, 1, 2, 3, 2, 4, 2, 5 }; int[] person03 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }; 각각의 수포자가 문제를 찍는 방식을 배열로 저장한다. for (int i = 0; i < answers.length; i++) { if (person01[i % person01.length] == answers[i..
-
프로그래머스 (Level 1) - K번째수Coding Test/Coding Test 문제 풀이 2021. 12. 27. 11:49
문제 설명 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 commands 배열을 하나씩 탐색하면서 배열 array의 x번째부터 y번째까지의 숫자를 임시 배열인 temp에 저장했다. 저장이 끝나면 Arrays.sort() 메서드를 통해서 오름차순 정렬을 한 후, z번째에 있는 숫자를 찾아내는 방식으로 문제를 해결하였다. 전체 소스코드 import java.io.*; import java.util.*; public class Solution07 { public int[] solution(int[] array, int[][] commands) { int[] answer = ..
-
프로그래머스 (Level 1) - 완주하지 못한 선수Coding Test/Coding Test 문제 풀이 2021. 12. 26. 23:17
문제 설명 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 처음에는 이중 반복문을 통해서 문제를 해결하고자 하였다. 이중 반복문을 사용하면 마라톤의 참여한 선수는 최대 100,000명이기 때문에, 100,000 * 100,000의 연산이 필요했다. 따라서, 시간 복잡도를 고려하면 다른 방식이 필요하다고 생각하였다. 시간 복잡도를 줄이기 위해 HashMap 자료구조를 사용하였다. 처음에는 마라톤 참가자 배열(participant)을 하나씩 탐색하면서 (마라톤 참가자, 1)의 형태로 Ha..