본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 배열 만들기 5 코드 힌트배열 크기 동적 조정:배열의 크기를 미리 알 수 없으므로 ArrayList를 사용하여 동적으로 크기를 조정합니다. ArrayList는 요소를 추가할 때 자동으로 크기가 조정됩니다.문자열 처리:각 문자열에서 특정 구간을 추출하려면 substring(int startIndex, int endIndex) 메서드를 사용합니다. 이 구간을 정수로 변환하기 위해 Integer.parseInt(String s) 메서드를 사용합니다.조건 검사 및 추가:변환된 정수가 주어진 값 k보다 큰지 검사하고, 조건에 맞으면 리스트에 추가합니다.배열 변환:ArrayList의 내용을 정적 배열로 변환합니다. 리스트의 크기를 기반으로 배열을 생성하고, 리스트의 각 값을 배열에 복사합니다.정답은 더보기 클릭더보기import j..
[프로그래머스] 주사위 게임 3 코드 힌트배열 정렬을 이용한 접근:입력된 4개의 정수를 배열에 저장하고, 배열을 오름차순으로 정렬합니다.정렬된 배열을 기반으로 각 숫자의 빈도와 위치를 쉽게 확인할 수 있습니다.조건 예시:만약 정렬된 배열의 결과가 a, b, c, d일 때:if a == d: 모든 값이 동일합니다. (예: [2, 2, 2, 2])else if a == c || b == d: 3개의 숫자가 같고 1개가 다릅니다. (예: [2, 2, 2, 3] 또는 [1, 2, 2, 2])추가적인 조건문은 스스로 생각해서 해보시는 것을 추천합니다.조건문 작성:모든 숫자가 같을 경우: 배열의 모든 값이 동일하면 결과는 1111 * a입니다. (예: [3, 3, 3, 3] → 1111 * 3)3개의 숫자가 같고 1개가 다른 경우: 배열에서 같은..
[프로그래머스] 간단한 논리 연산 코드 힌트논리 연산자 or (∨) 및 and (∧)의 의미 이해하기:OR (||): 두 값 중 하나라도 true이면 결과가 true입니다.예: false || true는 true입니다.예: true || false는 true입니다.예: true || true는 true입니다.예: false || false는 false입니다.AND (&&): 두 값 모두 true여야 결과가 true입니다.예: false && true는 false입니다.예: true && false는 false입니다.예: true && true는 true입니다.예: false && false는 false입니다.논리 연산자의 역할:OR (∨): 여러 조건 중 하나라도 true인 경우 전체 결과를 true로 만듭니다.AND (∧): 모든 조건..
[프로그래머스] 타겟넘버 코드 힌트2중 for문 사용하기:2차원 배열을 순회하려면 i와 j 두 개의 인덱스를 사용하여 배열의 모든 요소를 탐색합니다.i는 행 인덱스를, j는 열 인덱스를 나타냅니다.인덱스 합 조건 확인:배열의 각 요소에 대해 i + j의 합이 주어진 값 k 이하인지를 확인합니다.조건을 만족할 때만 해당 요소의 값을 result에 더해줍니다.변동 길이 배열 처리:배열 board의 각 행은 서로 다른 길이를 가질 수 있으므로, 내부 for문에서 열의 길이를 board[i].length로 동적으로 설정합니다.이를 통해 배열의 크기에 상관없이 올바르게 요소를 탐색할 수 있습니다.결과 반환:모든 조건을 만족하는 요소들의 합을 계산한 후, 최종 결과를 반환합니다. 정답은 더보기 클릭더보기class Solution { ..
[프로그래머스] 게임 맵 최단거리 코드 힌트BFS (너비 우선 탐색) 사용하기최단 거리를 찾는 문제에서는 BFS를 사용하는 것이 효율적입니다. BFS는 시작점에서 모든 노드를 레벨별로 탐색하며, 가장 먼저 도달한 경로가 최단 경로가 됩니다. DFS를 사용할 경우, 모든 경로를 탐색해야 하므로 효율성 문제로 인해 시간 초과가 발생할 수 있습니다.Queue 자료구조 활용BFS를 구현할 때는 Queue를 사용합니다. Queue는 FIFO(First-In-First-Out) 구조를 가지며, 탐색할 좌표와 현재까지의 거리를 저장하는 데 유용합니다. Queue를 통해 현재 위치에서 가능한 모든 이동을 처리하고, 다음 단계의 위치와 거리 정보를 큐에 추가합니다.좌표와 거리 저장탐색 과정에서 각 좌표와 해당 좌표까지의 거리 정보를 함께 저장합니다. 이..
[프로그래머스] 배열 만들기 4 코드 힌트Stack 사용하기: 문제를 해결할 때 스택(Stack) 자료구조를 사용하면 더 간단하게 구현할 수 있습니다. 스택은 LIFO(Last In First Out) 구조로, 마지막에 추가된 원소가 가장 먼저 꺼내집니다.문제 조건 잘 이해하기: stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다. 라는 조건이 있습니다. 해당 조건을 만족한다면 i++를 하라는 조건이 없습니다. 즉 계속해서 해당 arr[i]에 대해 조건이 맞다면 반복하라는 의미입니다.  정답은 더보기 클릭더보기import java.util.*;class Solution { public int[] solution(int[] arr) { // 결과를 저..
[프로그래머스] 숫자 짝꿍 코드 힌트문제 설명주어진 두 문자열 X와 Y에서 공통으로 포함된 숫자들로 만들 수 있는 가장 큰 숫자를 구하는 문제입니다.자릿수 배열 생성각 문자열에서 숫자의 빈도를 저장할 배열을 생성합니다.int[] x = new int[10]; : X 문자열에 대해 0부터 9까지 각 숫자의 빈도를 저장하는 배열입니다.빈도 계산X와 Y 문자열의 각 자릿수를 배열에 저장합니다.X 문자열의 경우: for (int i = 0; i Y 문자열의 경우: for (int i = 0; i 최댓값 문자열 생성9부터 0까지 배열을 돌면서 공통으로 존재하는 숫자를 문자열로 저장합니다.숫자가 큰 순서대로 비교하여 문자열에 저장하면 최댓값을 만들 수 있습니다.StringBuilder 사용문자열을 효율적으로 저장하기 위해 StringBuil..
[프로그래머스] 문자열 계산하기 문제 힌트split 사용하기주어진 문자열을 공백(" ")을 기준으로 나누어 배열에 저장합니다.예: "5 + 7 + 2 - 1 - 5" → ["5", "+", "7", "+", "2", "-", "1", "-", "5"]i % 2 == 0 일 때 피연산자 처리배열의 인덱스가 짝수인 경우, 피연산자를 의미합니다.이때, 연산자에 따라 피연산자 값을 누적합니다.예: "5 + 7 + 2 - 1 - 5"에서 5, 7, 2, 1, 5가 피연산자입니다.i % 2 != 0 일 때 연산자 처리배열의 인덱스가 홀수인 경우, 연산자를 의미합니다."+" 연산자는 다음 피연산자를 더하고, "-" 연산자는 다음 피연산자를 빼도록 설정합니다.예: "5 + 7 + 2 - 1 - 5"에서 +, +, -, -가 연산자입니다. 정답은 더보..