본문 바로가기

Java22

[프로그래머스] 피로도 (Java) 이번 문제는 완전탐색(BFS)를 활용해 풀어야 합니다.사실 완전탐색을 잘 몰라서 해당 개념을 서치하고, 다른 분들은 어떻게 푸셨는지 많이 참고해서 풀어보았습니다. 다만 모두 완전탐색을 안다는 것을 전제로 설명한 글이 많기에동작을 제대로 설명해주는 글이 없는듯하여 어떤 과정으로 코드가 동작된건지 설명하려합니다. 중요한 포인트는 세가지 입니다.1. 방문 여부 & 최소 피로도 만족 확인2. 다음 던전으로3. 다음 던전에 못가면 처음부터 다시 탐색   코드를 순서대로 실행하다보면 중간에 탐험이 불가능해질때가 생깁니다.  이때 재귀함수가 멈추고 visited[n] = false로 재정의됩니다.그리고 반복문에 의해 그 다음 n+1 자리로 가게 됩니다.  그리고 다시 재귀함수를 돌게 됩니다.끝까지 잘돌면 answer.. 2025. 3. 28.
[프로그래머스] 기능개발 (Java) 문제  1. 기능별 작업일수 계산하기for (int i = 0; i  2. 배포일 기억해두고, 해당 작업이랑 같이 배포 가능한 작업들 개수 세기for (int i = 0; i   import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] daysArr = new int[progresses.length]; for (int i = 0; i answer = new ArrayList(); int prevMaxDays = daysArr[0]; int count = 0; for (int i = 0; i .. 2025. 3. 26.
[프로그래머스] Java : 행렬의 곱셈 위의 행렬의 곱셈 규칙을 확인해가며 풀었습니다. class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; for (int i = 0; i 2025. 3. 13.
[프로그래머스] Java : 무인도 여행(DFS) 문제메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타냅니다. 어떤 섬으로 놀러 갈지 못 정한 메리는 우선 각 섬에서 최대 며칠씩 머물 수 있는지 알아본 후 놀러갈 섬을 결정하려 합니다.지도를 나타.. 2025. 2. 27.
[프로그래머스] Java : 귤 고르기 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로 다른 종.. 2025. 2. 14.
[프로그래머스] Java : N개의 최소공배수 문제)두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.입출력 예)arrresult[2, 6, 8, 14]168[1, 2, 3]6  제가 생각한 알고리즘은 두수의 최소공배수를 구하는 방법을 확장시킨겁니다.예를 들어 3과 4의 최소공배수는 12이고, 2와 6의 최소공배수는 6입니다.이를 구하는 방법은 a * b / (최대공약수) 를 떠올리시면 됩니다.저는.. 2025. 2. 5.
[프로그래머스] Java : 기사단원의 무기 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다.각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다.예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이 2인 무기를 구매합니다.. 2025. 1. 16.
[프로그래머스] Java : 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.  해당 문제는 공백을 기준으로 단어가 나뉩니다.그런데 그 공백이 몇개인지를 결과물로 동일하게 출력해주어야 합니다. 예를 들어ex ) "abc     de  " -> "AbC     De  "이런식으로 출력되어야 합니다.  1. 초기화StringBuilder answer = new StringBuilder();int num = 0;answer는 StringBuilder로 초기화해주고num은 공백 이후 나타날 단어의 index입니다. 2. 문자열의 문자가 공백인지 판단 후 an.. 2025. 1. 14.