Development Logs/Algorithms 84

[JAVA] 프로그래머스 : 가장 큰 수 (코딩테스트 고득점 kit > 정렬)

https://programmers.co.kr/learn/courses/30/lessons/42746?language=java 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr Comparator 인터페이스에 대한 지식이 있어야 문제를 쉽게 접근 가능할 수 있을 것이라고 생각함 정렬을 위한 인터페이스로 Comparable과 Comparator가 있는데 Comparable 인터페이스는 보통 객체의 기본적이고 고정된 정렬을 위해 사용하며 Comp..

[JAVA] 프로그래머스 : 예산 (코딩테스트 고득점 kit > 이분탐색)

https://programmers.co.kr/learn/courses/30/lessons/43237?language=java 코딩테스트 연습 - 예산 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그�� programmers.co.kr 이분탐색을 응용하여 문제를 구현하였음 이분탐색 알고리즘 코드 int BinarySearch(int arr[], int target) { int start = 0; int end = arr.length - 1; int mid; while(start target) end = mid - 1; else start = mid + 1; } retur..

[JAVA] 프로그래머스 : 숫자 야구 (코딩테스트 고득점 kit > 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42841 코딩테스트 연습 - 숫자 야구 [[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] 2 programmers.co.kr 해결 방안 1. 전체 경우는 (000~999)라고 생각하였으며 그 중 서로 다른 3자리 숫자 이므로 (123~987)로 범위를 줄일 수 있었음 또한 같은 숫자와 0이 들어간 숫자가 나온 경우 continue 해줘서 가능한 전체 숫자를 정해줌 (위와 같이 전체 경우가 주어짐) 2. 전체 경우의 수를 돌면서 baseball 이차원 배열에 담긴 전체 수와 비교하여 strike 수와 ball 수가 모두 같으면 가능한 답이 되므로 answer++ 해줌 =..

[JAVA] 프로그래머스 : 카펫 (코딩테스트 고득점 kit > 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 �� programmers.co.kr 첫 번째 풀이 카펫의 중앙 부분의 가로, 세로 길이를 이용하여 완전 탐색을 이용해 문제를 풀었음 해결 방안 1. 문제에 주어진 input으로 테두리(갈색) 갯수와 중앙(노란색) 갯수를 알 수 있고 이 것을 통해 카페의 전체 total 갯수를 알 수 있다고 생각함 2. 전체 갯수는 (yellow 부분의 가로+2) * (yellow 부분의 세로+2)와 같다..

[JAVA] 프로그래머스 : H-Index (코딩테스트 고득점 kit > 정렬)

https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 문제 이해부터 설계까지 어려웠음.. (해결은 했으나 나중에 한번 더 풀어봐야할듯) 해결 방안 1. 위의 제시된 문제를 보고 일단 인용횟수를 담은 배열인 citations를 오름차순 정렬해야겠다고 생각했음 => 정렬을 해놓으면 인용된 논문이 h편 이상인 경우를 찾으면 나머지 논문이 h번 이하 인용되어있는지 확인 안해도 되므로 2. ..

[JAVA] 프로그래머스 : 모의고사 (코딩테스트 고득점 kit > 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 첫 번째 풀이 수포자 3명이 일정하게 문제의 답을 찍으므로 person1, person2, person3 배열로 찍는 답의 순서를 적어줌 그리고 cnt 배열에 수포자 세명의 맞은 문제 갯수를 각각 저장해줌 그 중 가장 많이 맞은 문제 갯수를 찾아 max 변수에 저장해줌 그 후 가장 많이 맞은 문제 갯수와 수포자들의 맞은 문제 갯수를 비교하여 같은 경우 Ar..

[JAVA] 프로그래머스 : k번째수 (코딩테스트 고득점 kit > 정렬)

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 첫 번째 풀이 문제 설명에 나온 순서대로 구현하면 되는 문제임 코드 import java.util.*; // k번째 수 class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; int[] temp; // array 있고 // commands에 [i, j, k] 여러개 int i, j, ..

[JAVA] 프로그래머스 : 콜라츠 추측

https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2�� programmers.co.kr 주어진 num값이 int 형이므로 범위가 초과할수 있어 long으로 변환 후 알고리즘 구현함 import java.util.*; // 콜라츠 추측 class Solution { public int solution(int num) { int answer = 0; long n = num; while(n != 1){ // 홀수 if(..

[JAVA] 프로그래머스 : 자릿수 더하기

https://programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 여러 자료형 변환으로 문제를 해결하였음 import java.util.*; // 자릿수 더하기 public class Solution { public int solution(int n) { int answer = 0; String stringN = Integer.toString(n); S..

[JAVA] 프로그래머스 : 이중우선순위큐 (코딩테스트 고득점 kit > 힙(Heap))

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr min, max 우선순위 큐 두개를 이용하여 구현함 두 자료구조에 든 자료를 일치시키기 위해 minPQ에서 삭제한 값을 maxPQ에서도 삭제하고 maxPQ에서 삭제한 값을 minPQ에서 삭제하였음 ** 우선순위 큐에서도 List의 remove() 함수를 사용하여 삭제가 가능하였으며 remove("값")을 넣으면 해당 값을 삭제해줌 (PriorityQueue는 Queue 인터페이스를 사용하고 Queue는 List 인터페이스를 사용하므로 List의 remove함수 사용이 가능함) import java.util.*; // 이중우선순위큐 clas..