프로그래머스(Java)/Level 2 (51) 썸네일형 리스트형 [프로그래머스] 행렬의 곱셈 코드 힌트행렬의 크기 설정하기결과 행렬의 크기를 설정할 때, 행렬 곱셈의 규칙에 따라 결과 행렬의 행 수는 첫 번째 행렬의 행 수와 동일하고, 열 수는 두 번째 행렬의 열 수와 동일해야 합니다.이렇게 설정한 결과 행렬에 각 요소를 저장하고 계산할 수 있습니다.행렬 곱셈 원리 이해하기행렬 곱셈에서는 첫 번째 행렬의 행과 두 번째 행렬의 열을 곱하여 새로운 행렬을 생성합니다.각 결과 행렬의 요소는 첫 번째 행렬의 해당 행과 두 번째 행렬의 해당 열의 곱을 모두 더한 값입니다.계산 방법각 결과 행렬의 요소를 계산하기 위해, 첫 번째 행렬의 해당 행과 두 번째 행렬의 해당 열을 곱한 뒤, 그 결과를 합산합니다.이를 위해 반복문을 사용하여 각 요소를 계산하고 결과를 저장합니다.예시 설명만약 첫 번째 행렬이 2x3.. [프로그래머스] n^2 배열 자르기 코드 힌트 0 번째1 번째2 번째3 번째4 번째5 번째0 번째1234561 번째2234562 번째3334563 번째4444564 번째5555565 번째666666 1차원 배열로 2차원 배열 접근하기주어진 문제는 실제로 2차원 배열처럼 보이지만, 이를 1차원 배열로 접근할 수 있습니다.2차원 배열의 인덱스를 1차원 배열로 변환할 때, i / n은 행(row)을 나타내고, i % n은 열(col)을 나타냅니다.예를 들어, n = 3일 때, i = 4인 경우 (4 / 3)은 행(1), (4 % 3)은 열(1)이 됩니다.규칙 찾기2차원 배열에서 각 위치 (row, col)의 값은 Math.max(row, col) + 1로 결정됩니다.이 규칙을 통해, 1차원 배열의 각 위치에 대해 계산된 값을 result 배열에.. [프로그래머스] 게임 맵 최단거리 코드 힌트BFS (너비 우선 탐색) 사용하기최단 거리를 찾는 문제에서는 BFS를 사용하는 것이 효율적입니다. BFS는 시작점에서 모든 노드를 레벨별로 탐색하며, 가장 먼저 도달한 경로가 최단 경로가 됩니다. DFS를 사용할 경우, 모든 경로를 탐색해야 하므로 효율성 문제로 인해 시간 초과가 발생할 수 있습니다.Queue 자료구조 활용BFS를 구현할 때는 Queue를 사용합니다. Queue는 FIFO(First-In-First-Out) 구조를 가지며, 탐색할 좌표와 현재까지의 거리를 저장하는 데 유용합니다. Queue를 통해 현재 위치에서 가능한 모든 이동을 처리하고, 다음 단계의 위치와 거리 정보를 큐에 추가합니다.좌표와 거리 저장탐색 과정에서 각 좌표와 해당 좌표까지의 거리 정보를 함께 저장합니다. 이.. [프로그래머스] 연속 부분 수열 합의 개수 코드 힌트중복을 제거하기 위해 HashSet 사용하기:HashSet은 중복된 값을 자동으로 제거해줍니다. 이를 활용해 조합의 합을 저장합니다.연속된 부분 수열을 구하는 문제:주어진 배열에서 연속된 숫자들의 합을 구하는 문제입니다. 바로 옆에 이어지는 숫자들로 조합의 합을 계산해야 합니다.모든 길이의 연속된 부분 수열을 고려:조합의 길이는 1부터 배열의 길이까지 모두 포함됩니다. 즉, 모든 가능한 연속된 부분 수열을 구해야 합니다.% 연산자를 사용하여 배열의 쉬프트 구현:원형 배열을 구현하기 위해 % 연산자를 사용합니다. 이를 통해 배열의 끝에서 다시 처음으로 돌아가는 순환 구조를 쉽게 처리할 수 있습니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { // .. [프로그래머스] 주식가격 코드 힌트2중 for문으로 풀기이 방법은 가격이 떨어지는 시점을 찾기 위해 두 번 반복문을 사용하는 방법입니다.초기화:결과를 저장할 배열 result를 prices 배열의 크기만큼 초기화합니다.모든 요소가 0으로 설정됩니다.이중 루프:첫 번째 루프는 각 가격을 순차적으로 확인합니다.두 번째 루프는 현재 가격 이후의 가격을 비교합니다.가격 하락 확인:만약 가격이 떨어지는 순간을 찾으면, 그 시점까지의 시간을 result 배열에 기록합니다.가격 유지 처리:끝까지 가격이 떨어지지 않는 경우에는 남은 시간을 result 배열에 기록합니다.Stack을 활용하여 풀기이 방법은 스택을 사용하여 가격이 떨어지는 시점을 효율적으로 찾는 방법입니다.초기화:결과 배열 result와 인덱스를 저장할 스택을 초기화합니다.가격 .. [프로그래머스] 더 맵게 코드 힌트PriorityQueue 사용하기우선순위 큐는 각 요소가 우선순위에 따라 정렬되어 큐에 저장됩니다. 이 문제에서 PriorityQueue를 사용하면 가장 작은 스코빌 지수를 효율적으로 가져올 수 있습니다. 일반 큐나 리스트를 사용할 경우, 효율성 테스트에서 시간 초과가 발생할 수 있습니다.PriorityQueue는 들어온 순서와 상관없이 우선순위가 높은 데이터가 먼저 나가는 구조입니다. 여기서 우선순위는 낮은 숫자일수록 높은 우선순위를 가집니다.섞은 음식들과 섞지 않은 음식들 모두 스코빌 지수(K)보다 높아야 합니다두 개의 가장 작은 스코빌 지수를 꺼내어 새로운 스코빌 지수를 만들어 우선순위 큐에 다시 추가합니다.이 과정을 반복하여 모든 음식이 K 이상의 스코빌 지수를 갖도록 만듭니다.만약 조건.. [프로그래머스] 귤 고르기 문제 풀이 힌트결과를 저장할 변수 (result) 초기화:몇 가지 종류의 귤을 사용했는지 저장하는 변수입니다.HashMap을 사용하여 귤의 크기별 개수를 세기 (map):map은 귤의 크기(size)를 키로 하고, 해당 크기의 귤 개수(count)를 값으로 저장합니다.getOrDefault(size, 0)는 size가 map에 없을 경우 0을 반환하여, 처음 등장하는 귤 크기는 개수를 1로 시작합니다.귤의 크기 리스트 생성 (keySet) 및 내림차순 정렬:keySet은 map의 키를 리스트로 변환한 것입니다.sort 메서드를 사용하여 귤의 개수를 기준으로 내림차순 정렬합니다.많은 개수의 귤 크기부터 순서대로 k에서 빼기:for 루프를 사용하여 keySet을 순회하며, 각 크기의 귤 개수를 k에서 뺍니다.. [프로그래머스] 프로세스 문제 풀이 힌트문제 이해:대기 큐에 있는 프로세스들의 우선순위에 따라 순서대로 실행됩니다.몇 번째에서 실행되는지 알고 싶을 때.우선순위 관리:우선순위가 높은 프로세스가 먼저 실행됩니다. 이를 위해 우선순위 배열을 정렬하여 가장 높은 우선순위를 찾습니다.큐(Queue) 사용:큐는 먼저 들어온 것이 먼저 나가는 구조입니다. 큐(Queue)를 모르신다면 문제 풀기 전에 보고 오시는 것을 추천합니다.큐를 사용하여 프로세스의 우선순위를 관리합니다.로직 설명:가장 높은 우선순위의 프로세스가 실행될 때마다 출력 순서를 증가시키고, 타겟 프로세스의 인덱스를 감소시킵니다.타겟 프로세스가 실행되면 그때까지의 출력 순서를 반환합니다.만약 현재 프로세스가 가장 높은 우선순위가 아니라면, 해당 프로세스를 큐의 맨 뒤로 이동시켜.. 이전 1 2 3 4 5 6 7 다음