java 31

[프로그래머스] 기사단원의 무기 - JAVA 풀이

기사단원의 무기문제 설명숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다.각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다.예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이..

알고리즘 2024.10.18

[프로그래머스] 지폐 접기 - JAVA 풀이

지폐 접기문제 설명민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번..

알고리즘 2024.10.17

[프로그래머스] 겹치는 선분의 길이 - JAVA 풀이

겹체는 선분의 길이문제 설명선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.제한사항lines의 길이 = 3lines의 원소의 길이 = 2모든 선분은 길이가 1 이상입니다.lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.-100 ≤ ..

알고리즘 2024.10.14

[프로그래머스] 두 개 뽑아서 더하기 - JAVA 풀이

[프로그래머스] 두 개 뽑아서 더하기문제 설명정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.제한사항numbers의 길이는 2 이상 100 이하입니다.numbers의 모든 수는 0 이상 100 이하입니다.입출력 예아이디어2중 루프 돌려서 중복 없이 리스트에 추가한다 (indexOf로 중복 체크 했지만 HashSet으로도 처리 가능)오름차순 정리JAVA 풀이import java.util.*;class Solution { public List solution(int[] n) { List tmp = new ArrayList();..

카테고리 없음 2024.10.13

[프로그래머스] 안전지대 - JAVA 풀이

프로그래머스 - 안전지대문제 설명다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.제한사항board는 n * n 배열입니다.1 ≤ n ≤ 100지뢰는 1로 표시되어 있습니다.board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.입출력 예아이디어board[i][j] 의 상하좌우, 대각선 상하좌우에 값을 1로 변환한 뒤 0의 갯수를 리턴한다테두리 경계값에 걸칠때 ..

알고리즘 2024.10.11

[LEETCODE] 706. Design HashMap

리트코드 - Design HashMap문제 설명내장 해시테이블 라이브러리를 사용하지 않고 HashMap을 구현하라예시제한 사항0 At most 104 calls will be made to put, get, and remove.아이디어제한 범위가 10^6 이라 배열로 충분히 간단하게 구현이 가능하다.사이즈 1000001인 배열을 만들고 인덱스를 키값으로 구현LinkedList를 활용해서 해결이 가능하다(추후 정리)JAVA 풀이class MyHashMap { int[] m; public MyHashMap() { m = new int[1000001]; Arrays.fill(map, -1); } public void put(int key, int value) { ..

알고리즘 2024.10.09

[프로그래머스] - 숫자 변환하기 JAVA 풀이

프로그래머스 - 숫자 변환하기 JAVA 풀이문제 설명자연수x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다.x에 n을 더합니다x에 2를 곱합니다.x에 3을 곱합니다.자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요.제한사항1 ≤ x ≤ y ≤ 1,000,0001 ≤ n y입출력 예아이디어브루트포스로는 시간초과bfs로 해결이 가능하지만 dp가 가장 적절한 해법인듯 하다각 계산식 경우의 수 마다 비교해가면서 dp 배열 만들고 변환 불가처리만 주의하자JAVA 풀이class Solution { public int solutio..

알고리즘 2024.10.08

[프로그래머스] PCCP 기출문제 - 붕대 감기 JAVA 풀이

프로그래머스 - 붕대 감기문제 설명어떤 게임에는 붕대 감기라는 기술이 있습니다.붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다.기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다.몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니..

알고리즘 2024.10.04

[프로그래머스] 정수를 나선형으로 배치하기 JAVA 풀이

정수를 나선형으로 배치하기문제 설명양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n^2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.제한사항1 입출력 예아이디어방향을 분류(상하좌우) 한다.분류한 방향의 다음에 값이 있는지 체크, 방향 전환 처리 주의풀이class Solution { public int[][] solution(int n) { int[][] answer = new int[n][n]; int col = 0; int row = 0; // 방향 - e: 우, s: 하, w: 좌, n: 상 String direction = "e..

알고리즘 2024.10.02

[프로그래머스] PCCP 기출문제 - 동영상 재생기 JAVA 풀이

동영상 재생기문제 설명당신은 동영상 재생기를 만들고 있습니다.당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다.각 기능이 수행하는 작업은 다음과 같습니다.10초 전으로 이동:사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.10초 후로 이동:사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.오프닝 건너뛰기:현재 재생 위치가 오프..

알고리즘 2024.10.01