본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 두 정수 사이의 합 변수 초기화:result: 최종 합계를 저장하는 변수로 초기 값은 0입니다.start와 end: 시작 값과 끝 값을 저장하는 변수로, 초기 값은 0입니다.시작 값과 끝 값 설정:a와 b의 크기를 비교하여, 더 작은 값을 start로, 더 큰 값을 end로 설정합니다.이를 통해 항상 작은 값부터 큰 값까지의 합을 구할 수 있습니다.for 루프를 통한 합산:start부터 end까지 모든 정수를 순회하며 result에 더합니다.결과 반환:최종 합계를 result에 저장하고 반환합니다.추가 힌트:삼항 연산자를 사용하면 코드를 더 간결하게 만들 수 있습니다:int start = a b ? a : b;Math를 활용하면 삼항 연산자를 사용하지 않고 더욱 더 간결하게 만들 수 있습니다:Math.min(a,b);Ma..
[프로그래머스] 의상 코드 힌트HashMap 사용: 의류의 종류별 개수를 저장하기 위해 HashMap을 사용합니다.조합 계산: 각 의류 종류별로 (의류 수 + 1)을 곱하여 모든 조합을 계산합니다. 여기서 +1은 해당 종류의 의류를 선택하지 않는 경우를 포함합니다.모든 종류를 선택하지 않는 경우 제외: 모든 조합에서 하나도 선택하지 않는 경우를 제외하기 위해 최종 결과에서 -1을 합니다.수학적 힌트이 문제는 조합을 다루는 문제입니다. 각 종류의 의상은 선택하거나 선택하지 않을 수 있습니다. 예를 들어, 두 종류의 의상(모자, 상의)이 있을 때, 각각 두 개의 옵션(착용하지 않음, 착용)이 있습니다. 이는 아래와 같은 조합을 형성합니다:모자를 착용하지 않음, 상의를 착용하지 않음모자를 착용하지 않음, 상의를 착용모자를 착용, ..
[프로그래머스] 타겟넘버 깊이 우선 탐색(DFS)으로 목표 값 찾기이 문제는 주어진 정수 배열 numbers와 목표 값 target을 사용하여 배열의 각 요소를 더하거나 빼는 모든 가능한 방법을 탐색하여 목표 값과 일치하는 경우의 수를 찾는 문제입니다.문제 풀이이 문제를 해결하기 위해 DFS(깊이 우선 탐색) 방법을 사용했습니다. 각 숫자를 더하거나 빼는 두 가지 선택지를 재귀적으로 탐색하여 목표 값과 일치하는 경우를 찾습니다.핵심 포인트재귀 함수 사용: 재귀 함수를 사용하여 모든 가능한 합계를 탐색합니다.기저 사례: 배열의 모든 숫자를 사용한 경우, 현재 합계가 목표 값과 일치하는지 확인합니다.재귀 호출: 각 숫자를 더하거나 뺀 두 가지 경우를 재귀적으로 탐색하여 결과를 합산합니다. 정답은 더보기 클릭 더보기class Solu..
[프로그래머스] 가까운 1 찾기 코드 힌트배열 순회: 주어진 인덱스부터 배열의 끝까지 반복문을 사용하여 순회합니다. 이렇게 하면 특정 위치부터 배열을 검사할 수 있습니다.for (int i = idx; i 조건문 사용: 배열의 요소가 1인지 확인하는 조건문을 사용하여 원하는 값을 찾습니다. 조건이 참이면 해당 인덱스를 반환합니다.if (arr[i] == 1) // 현재 요소가 1인지 확인 return i; // 현재 인덱스를 반환기본 반환 값 설정: 반복문이 끝날 때까지 원하는 값을 찾지 못하면 -1을 반환합니다. 이는 주어진 인덱스 이후에 1이 없는 경우를 처리합니다.  정답은 더보기 클릭더보기더보기class Solution { public int solution(int[] arr, int idx) { ..
[프로그래머스] 최댓값 만들기(2) 코드 힌트배열 정렬: 배열을 정렬하면 가장 작은 값들과 가장 큰 값들을 쉽게 찾을 수 있습니다. 이를 통해 음수와 양수 곱셈 결과를 계산할 수 있습니다.Arrays.sort(numbers); // 배열을 오름차순으로 정렬음수와 양수 곱셈 결과: 정렬된 배열에서 가장 작은 두 수와 가장 큰 두 수를 선택하여 곱셈 결과를 계산합니다. 음수와 음수를 곱하면 양수가 되므로, 양수 두 개의 곱셈 결과보다 클 수 있습니다.int negativeNumberMul = numbers[0] * numbers[1]; // 가장 작은 두 수의 곱셈int positiveNumberMul = numbers[len-1] * numbers[len-2]; // 가장 큰 두 수의 곱셈최대 값 반환: 두 곱셈 결과 중 더 큰 값을 반환..
[프로그래머스] 직각삼각형 출력하기 코드 힌트for 문 사용하기: for 문은 반복문으로, 특정 조건이 참인 동안 코드를 반복 실행합니다. 여기서는 1부터 n까지 반복하여 별을 출력합니다.for (int i = 1; i repeat 메서드 사용하기: String 클래스의 repeat 메서드는 문자열을 주어진 횟수만큼 반복하여 새로운 문자열을 반환합니다. 예를 들어, "*".repeat(3)은 "***"을 반환합니다."*".repeat(3); // "***" 반환   정답은 더보기 클릭더보기import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ..
[프로그래머스] 인덱스 바꾸기 코드 힌트문자열을 배열로 변환하기: 문자열을 배열로 변환하면 각 문자를 개별적으로 다룰 수 있습니다. 이를 위해 split 메서드를 사용하여 문자열을 배열로 변환했습니다. split 대신 다른 방법도 사용할 수 있습니다.다른 방법들StringBuilder 사용하기: StringBuilder는 문자열을 효율적으로 조작할 수 있도록 도와줍니다. charAt과 setCharAt 메서드를 사용하여 문자를 교환할 수 있습니다.toCharArray 사용하기: toCharArray 메서드를 사용하면 문자열을 문자 배열로 변환할 수 있습니다. 이를 통해 문자를 교환한 후 다시 문자열로 변환합니다.문자 교환하기: 배열 내의 특정 위치에 있는 문자를 서로 교환하기 위해 임시 변수를 사용하여 값을 저장하고 교환합니다.자바에..
[프로그래머스] ad 제거하기 코드 설명 및 힌트이 코드는 문자열 배열에서 특정 문자열을 필터링하는 기능을 수행합니다. 예제에서는 문자열 배열 strArr에서 "ad"를 포함하지 않는 문자열만을 추출하여 새로운 배열로 반환합니다.주요 코드 설명ArrayList 사용하기:배열의 크기를 미리 알 수 없을 때는 ArrayList를 사용하는 것이 편리합니다. ArrayList는 동적으로 크기가 조정되는 배열과 유사합니다.// import 필수import java.util.ArrayList;ArrayList 선언ArrayList 배열이름 = new ArrayList();반복문을 통한 문자열 필터링:for-each 반복문을 사용하여 배열의 각 원소를 검사합니다. 이 때, 조건에 맞지 않는 문자열은 ArrayList에 추가합니다.for (Stri..