본문 바로가기

Coding Test/Programmers23

[프로그래머스] 단속카메라 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 한다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 한다. 2. 풀이 Greedy 를 이용한 문제 풀이 진출 시점을 기준으로 오름차순으로 정렬 진출하려는 차량이 카메라를 한번이라도 거쳤는지 확인하기 위해 카메라의 초기 위치는 -30000 으로 설정 (설치는 아님) 카메라의 위치가 진입 시점 이전이라면 진출 시점에 설치 3. 코드 import java.util.*; class Solution .. 2021. 11. 25.
[프로그래머스] 구명보트 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 구명보트에 1명 또는 최대 2명을 태워 무인도에서 구출한다. 2명의 무게가 구명보트의 무게 제한을 넘지 않을 때만 2명이 탄다. 구출에 필요한 최소의 구명보트를 return한다. 2. 풀이 Greedy 를 이용한 문제 풀이 사람들의 무게를 정렬한다. 가장 무거운 사람과 가장 가벼운 사람의 무게를 통해 2명이 탈 지 1명이 탈지 정한다. 3. 코드 import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); int i = 0; for (int j=people.length-1; i 2021. 11. 25.
[프로그래머스] 섬 연결하기 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. costs를 그림으로 표현하면 다음과 같으며, 이때 초록색 경로로 연결하는 것이 가장 적은 비용으로 모두를 통행할 수 있도록 만드는 방법입니다. 2. 풀이 Greedy 와 Union-Find 를 이용한 문제 풀이 Union-Find Union-Find 란 여러개의 노드가 존재할 때 연결된 노드들을 같은 집합 구성원으로 묶어주는 알고리즘이다. 그림과 같이 각 노드들의 번호와 연결된 노드들이 주어졌을 때, 몇개의 집합이 있는지, 각 노드들은.. 2021. 11. 25.
[프로그래머스] 큰 수 만들기 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구한다. 2. 풀이 Greedy 를 이용한 문제 풀이 index는 1 부터 이전 index와 비교한다. 이전 값이 작을 때 이전 값 제거 이전 값이 클 때 index가 마지막이면 값 제거 index + 1 3. 코드 class Solution { public String solution(String number, int k) { StringBuilder sb = new StringBuilder(); sb.append(number); int idx = 1; while (k != 0) { // 이전값이 작을 때 if (idx >= 1 && sb.charAt(id.. 2021. 11. 25.
[프로그래머스] 체육복 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 체육복을 잃어버린 학생은 앞 뒤 번호 학생들 중 여벌의 체육이 있는 학새에게 체육복을 빌릴 수 있다. 여벌의 체육이 있는 학생이 도난을 당한 경우는 체육복 하나만 도난당한 것이며, 남은 체육복을 다른 학생에게 빌려줄 수 없다. 2. 풀이 Greedy 를 이용한 문제 풀이 전체 학생의 체육복 개수를 하나의 배열에 저장한다. 기본 체육복의 개수를 배열의 초기값이 0으로 가정 여분의 체육복이 있을 경우 : +1 체육을 도난당한 경우 : -1 체육복의 개수가 -1인 학생의 경우 왼쪽/오른쪽 학생을 확인하고 빌릴 수 있으면 빌린다. 3. 코드 class Solution { public int solution(int n, int[] lo.. 2021. 11. 25.
[프로그래머스] 조이스틱 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 모든 글자가 A로 구성된 문자를 조이스틱을 최소한의 조작 횟수로 원하는 문자를 만들어야 한다. 조이스틱을 각 방향으로 움직이면 아래와 같다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 2. 풀이 Greedy 를 이용한 문제 풀이 알파벳 변경을 위해 A->B->C 방향과 A->Z->Y 방향 중 가까운 것으로 한다. 커서 이동을 할 경우 연속된 A가 나오면 이동할 커서의 값이 줄어든다. 커서를 오른쪽으로 순서대로 이동하는 경우 (array.length - 1) Ex) ABCAAAAA.. 2021. 11. 25.
[프로그래머스] 카펫 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 갈색 격자와 노란색 격자의 수를 통해 카펫의 가로/ 세로 크기를 return 하라. 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 2. 풀이 완전탐색 을 이용한 문제 풀이 카펫의 가로 길이 = 1 이기 때문에 카펫의 세로 길이 >= 3 총 격자의 개수를 카펫의 세로 길이로 나누었을 때 나머지가 있으면 안된다. (격자는 자연수) 3. 코드 class Solution { public int[] solution(int brown, .. 2021. 11. 25.
[프로그래머스] 모의고사 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 한다. 수포자 찍는 방식 1번 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요. 2. 풀이 완전탐색 을 이용한 문제 풀이 모든 수포자의 찍는 방식의 패턴을 배열로.. 2021. 11. 25.
[프로그래머스] 소수 찾기 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 숫자가 적힌 문자열 numbers가 주어졌을 때, 문자열의 숫자를 통해 만들 수 있는 소수가 몇 개인지 return 한다. 2. 풀이 완전탐색 을 이용한 문제 풀이 주어진 숫자를 통해 만들 수 있는 수의 조합을 구한다. 중복 방지를 위해 HashSet 사용 재귀함수를 통해 구현 소수인지 확인하는 함수를 구현 확인하는 숫자의 제곱근 이하까지만 계산한다. 3. 코드 import java.util.*; class Solution { public int solution(String numbers) { int answer = 0; HashSet set = new HashSet(); permutation("", numbers, set);.. 2021. 11. 25.