전체 글 (430) 썸네일형 리스트형 [프로그래머스] 최고의 집합 코드 힌트:불가능한 경우 처리:만약 n이 s보다 크다면, n개의 숫자로 s를 나누는 것이 불가능하기 때문에 결과 배열로 {-1}을 반환합니다.평균 분배:s를 n으로 나눈 몫을 모든 배열 요소에 기본 값으로 설정합니다.이렇게 하면 각 요소가 가능한 한 균등하게 값을 가지게 됩니다.나머지 분배:s가 n으로 정확히 나누어 떨어지지 않는 경우, 나머지를 배열의 뒤에서부터 하나씩 분배합니다.이렇게 하면 배열이 내림차순으로 정렬된 상태를 유지할 수 있습니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { public int[] solution(int n, int s) { int[] result = new int[n]; // 길이가 n인 결과 배열 생성 .. [프로그래머스] 숫자 게임 코드 힌트:정렬 후 비교:두 배열 A와 B를 오름차순으로 정렬한 후, 각 요소를 비교합니다.이렇게 하면 최소한의 연산으로 이길 수 있는 경우를 최대화할 수 있습니다.두 포인터 방식:이 코드는 두 포인터 방식(two-pointer technique)을 사용합니다.두 배열을 동시에 순회하면서 비교하여 A의 카드를 사용하여 B의 카드를 이길 수 있는지를 판단합니다.이 방식은 시간 복잡도를 줄이는 데 효과적입니다.반복문 구조:while 반복문은 B 배열의 끝에 도달할 때까지 진행되며, A 배열의 현재 카드가 B 배열의 현재 카드보다 작은 경우에만 result를 증가시킵니다.이로써 A의 카드가 B의 카드보다 많은 경우에도 처리할 수 있습니다. 정답은 더보기 클릭더보기import java.util.*;class S.. [프로그래머스] 베스트앨범 코드 힌트장르별 총 재생 횟수 계산:genres와 plays 배열을 사용하여 각 장르의 총 재생 횟수를 계산합니다.이 정보를 HashMap에 저장합니다.장르 정렬:장르별 총 재생 횟수를 기준으로 장르를 내림차순으로 정렬합니다.이 작업은 장르별로 재생 횟수가 많은 순서대로 곡을 선택하기 위해 필요합니다.장르별 곡 정렬:각 장르에 대해, 그 장르에 속하는 곡들을 재생 횟수로 내림차순으로 정렬합니다.만약 재생 횟수가 같다면, 인덱스가 작은 곡을 우선시합니다.결과 리스트 작성:각 장르에서 가장 많이 재생된 두 곡의 인덱스를 결과 리스트에 추가합니다.이때, 최대 두 곡만 선택합니다.결과 배열 생성:결과 리스트를 배열로 변환하여 반환합니다. 정답은 더보기 클릭더보기import java.util.*;class So.. [프로그래머스] 숫자 변환하기 코드 힌트목표:주어진 숫자 x에서 시작해 목표 숫자 y에 도달하는 최소 연산 횟수를 구합니다.사용 가능한 연산은 n을 더하기, 2를 곱하기, 3을 곱하기입니다.BFS (너비 우선 탐색):BFS를 사용해 최단 경로를 찾습니다.BFS는 주어진 상태에서 가능한 모든 다음 상태를 큐에 추가하고, 하나씩 처리하면서 목표 상태에 도달하는지를 확인합니다.방문 체크:아마 대부분의 사람들이 시간초과의 이유로 찾으셨을거라고 생각합니다.이미 방문한 숫자는 최소 횟수가 아니므로 visit 배열을 사용하여 이미 방문한 숫자는 다시 방문하지 않도록 visited 배열을 사용합니다. 종료 조건:목표 숫자 y에 도달하면 그때까지의 연산 횟수를 반환합니다.큐가 비었음에도 목표에 도달하지 못했다면 -1을 반환해 불가능함을 나타냅니다. .. [백준] 이항 계수 1 (11050번) 코드 힌트입력 처리:두 개의 숫자 n과 m이 입력으로 주어집니다. 이 숫자들은 nCm 조합을 계산하기 위해 사용됩니다.nCm은 n개의 요소 중 m개의 요소를 선택하는 조합의 수를 의미합니다.조합 계산:조합을 계산하기 위해 두 가지 반복문을 사용합니다.첫 번째 반복문은 n부터 n-m+1까지 곱해 n! / (n-m)!를 계산합니다.두 번째 반복문은 m!을 계산해 첫 번째 계산 결과를 나누어 최종 조합 값을 구합니다.출력 처리:최종적으로 계산된 조합 값을 출력합니다.BufferedWriter를 사용해 출력을 버퍼링하고, 모든 출력을 한 번에 처리합니다. 정답은 더보기 클릭더보기import java.io.*;public class Main { public static void main(String[] ar.. [프로그래머스] 성격 유형 검사하기 코드 힌트성격 유형 초기화:성격 유형을 두 개씩 묶어 저장하는 배열을 초기화합니다. 예를 들어, {'R', 'T'}는 한 쌍의 성격 유형을 의미합니다.각 성격 유형의 점수를 저장하기 위해 해시맵을 초기화합니다. 이때 초기값으로 모든 성격 유형의 점수를 0으로 설정합니다.점수 계산:survey 배열과 choices 배열을 순차적으로 탐색합니다.각 설문 항목에서 첫 번째 성격 유형과 두 번째 성격 유형을 추출합니다.choices 값에 따라 점수를 분배합니다. 만약 선택한 값이 4보다 크면 두 번째 성격 유형에 점수를 더하고, 4보다 작으면 첫 번째 성격 유형에 점수를 더합니다.결과 조합:각 성격 유형 쌍에서 점수가 높은 성격 유형을 선택해 결과 문자열에 추가합니다.동일한 점수일 경우 배열에서 앞에 있는 성격.. [프로그래머스] 바탕화면 정리 코드 힌트초기화:result 배열은 최종적으로 반환될 값으로, 좌상단과 우하단 좌표를 담고 있습니다.배열의 처음 두 값(최소 Y, 최소 X)은 각각 Integer.MAX_VALUE로 초기화하여, 최소값을 찾는 데 방해되지 않도록 합니다.나머지 두 값(최대 Y, 최대 X)은 Integer.MIN_VALUE로 초기화하여, 최대값을 찾는 데 방해되지 않도록 합니다.2차원 탐색:wallpaper 배열은 각 문자열을 행으로 구성된 2차원 공간을 나타냅니다. 각 문자(열)를 행별로 탐색합니다.# 문자를 찾을 때마다, 해당 좌표를 기준으로 result 배열의 값을 갱신합니다.좌표 갱신:#을 찾은 경우, result[0](최소 Y)와 result[1](최소 X)는 최소값을 갱신하여 좌상단의 좌표를 설정합니다.resul.. [백준] 분해합 (2231번) 코드 힌트분해합의 개념:분해합이란 어떤 숫자 i와 그 숫자의 각 자릿수를 모두 더한 값을 의미합니다.예를 들어, 숫자 198의 분해합은 198 + 1 + 9 + 8 = 216입니다.생성자 찾기:주어진 n의 분해합을 만들어낼 수 있는 가장 작은 숫자 i를 찾는 것이 목표입니다.i를 1부터 n-1까지 검사하여, 분해합이 n과 일치하면 해당 숫자를 반환합니다.자릿수 합 계산:각 숫자 i의 자릿수 합을 계산하기 위해, 숫자를 10으로 나누어가며 각 자릿수를 더합니다.이렇게 계산한 자릿수 합과 i를 더해 n과 비교합니다.결과 반환:만약 n의 분해합을 만들어낼 수 있는 숫자 i가 없다면 0을 반환합니다. 정답은 더보기 클릭더보기import java.io.*;public class Main { public s.. 이전 1 ··· 19 20 21 22 23 24 25 ··· 54 다음