본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 삼각형의 완성조건 (2) 코드 힌트규칙 찾기:주어진 두 변이 삼각형을 형성할 수 있는 경우, 세 번째 변의 길이는 특정 범위 내에서 가능해야 합니다.예를 들어, 주어진 변의 길이가 [11, 7]인 경우를 생각해봅시다.11이 가장 긴 변일 때:삼각형의 성질에 따르면, 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 작아야 합니다.이 경우 세 번째 변의 길이 x는 11 > x > 4이어야 하므로, 가능한 변의 길이는 5, 6, 7, 8, 9, 10으로 6개의 경우가 가능합니다.max 주어진 변이 가장 긴 변이 아닐 때:주어진 변 [11, 7]이 가장 긴 변이 아닐 때, 세 번째 변이 가장 긴 변이 됩니다.이 경우, x = 12, 13, 14, 15, 16, 17이 가능합니다. 역시 6개의 경우가 있습니다.max + min > n..
[프로그래머스] 구슬을 나누는 경우의 수 코드 힌트두 가지 방법을 사용할 수 있습니다:BigInteger 사용하기BigInteger 클래스는 매우 큰 숫자를 안전하게 처리할 수 있습니다. 예를 들어, 30! (30의 팩토리얼)을 계산할 때, int 또는 long의 범위를 초과할 수 있습니다. BigInteger는 이러한 경우에도 안전하게 숫자를 관리할 수 있는 클래스입니다.제한 사항에 따라 balls와 share가 30까지 갈 수 있으므로, 팩토리얼 계산 시 BigInteger를 사용하여 계산할 수 있습니다.단점으로는 조작을 하기 힘들다는 단점이 있습니다.BigInteger 없이 풀기이 문제는 조합 공식을 사용해 풀 수 있습니다. 조합 공식은 n! / ((n-m)! * m!)입니다. 이를 두 단계로 나누어 풀 수 있습니다.첫 번째 단계는 n! ..
[프로그래머스] 캐릭터의 좌표 코드 힌트좌표 제한 계산board 배열을 사용하여 이동 범위를 계산합니다. board[0]과 board[1]는 보드의 크기를 나타내며, 이를 바탕으로 보드의 중앙에서 이동할 수 있는 최대 범위를 계산합니다. 이 계산은 좌표의 제한을 결정하는 데 필요합니다.키 입력 처리keyinput 배열을 순회하며 각 키 입력에 따라 좌표를 업데이트합니다. 각 방향(왼쪽, 오른쪽, 위, 아래)에 대한 조건을 체크하고, 이동 가능한 범위 내에서 좌표를 조정합니다.좌표 업데이트각 방향으로 이동 시 현재 좌표가 설정된 범위 내에 있는지 확인합니다. 범위를 벗어나지 않도록 조건문을 사용하여 좌표를 조정합니다.  정답은 더보기 클릭더보기class Solution { public int[] solution(String[] k..
[프로그래머스] 영어가 싫어요 코드 힌트index와 동일한 영어 숫자를 저장한 배열 생성배열 numArr를 생성하여 인덱스와 동일한 숫자를 영어로 저장합니다. 예를 들어, numArr[0]은 "zero", numArr[1]은 "one" 등으로 설정합니다. 이 배열을 사용하여 숫자를 나타내는 문자열을 찾아내고 교체할 수 있습니다.replaceAll() 사용하기numbers 문자열에서 각 영어 숫자를 대응하는 숫자로 교체합니다. replaceAll() 메서드를 사용하여 문자열 내의 각 영어 숫자를 해당 숫자로 변환합니다. 예를 들어, "zero"를 "0"으로, "seven"을 "7"로 바꿉니다.Long 타입으로 변환모든 영어 숫자를 숫자로 변환한 후, 최종적으로 numbers 문자열을 long 타입으로 변환합니다. Long.parseLo..
[프로그래머스] 잘라서 배열로 저장하기 코드 힌트배열 크기 계산문자열의 길이와 주어진 크기 n을 이용해 결과 배열의 크기를 결정합니다. 문자열의 길이를 n으로 나눈 값을 기준으로 배열 크기를 결정합니다. 나머지가 있는 경우, 배열 크기는 하나 더 추가합니다.문자열을 잘라서 배열에 저장문자열을 n 길이로 잘라서 배열에 저장합니다. 문자열의 길이보다 남은 부분이 짧을 수 있으므로, 마지막 조각은 남은 모든 문자열을 포함합니다.결과 배열 반환잘라진 문자열 조각들을 배열에 저장한 후, 배열을 반환합니다.   정답은 더보기 클릭더보기class Solution { public String[] solution(String my_str, int n) { // 문자열을 n 길이의 조각으로 나누기 위해 결과 배열의 크기 결정 //..
[프로그래머스] 소인수분해 코드 힌트소인수 분해 사용주어진 정수 n을 소인수로 분해하여 n을 나눌 수 있는 최소의 소수를 찾습니다. 이를 통해 n을 작은 소수로 나누면서 반복하여 소인수를 찾아냅니다.중복 제거와 정렬List를 사용하여 중복된 소인수를 제거하면서 소인수를 저장합니다.Set을 사용하여 자동으로 중복을 제거하며, 마지막에 배열로 변환한 후 정렬하여 결과를 반환합니다.반복문과 조건문 활용while 반복문을 사용해 n이 1이 될 때까지 소인수 분해를 계속합니다.for 반복문을 사용해 n을 나눌 수 있는 가장 작은 소수를 찾아내어 n을 나눕니다.결과 배열 생성List를 배열로 변환하여 결과를 반환합니다.Set을 배열로 변환하고 정렬한 후 반환합니다.  정답은 더보기 클릭더보기import java.util.*;class Sol..
[프로그래머스] 다리를 지나는 트럭 코드 힌트트럭 객체 사용하기Truck 클래스를 사용해 각 트럭의 무게와 다리에서 남은 이동 거리를 관리합니다. 이 클래스를 통해 트럭이 다리에서 언제 빠져나가는지를 계산할 수 있습니다.현재 다리 위의 트럭 상태 관리List를 사용하여 다리 위에 있는 트럭들을 순서대로 관리합니다. 리스트의 각 요소는 트럭 객체로, 이들이 다리를 이동하는 과정을 추적합니다.매 초마다 트럭들의 남은 이동 거리를 줄이며, 다리를 완전히 건넌 트럭은 리스트에서 제거하고, 다리 위의 현재 무게를 감소시킵니다.새로운 트럭 진입 처리새로운 트럭이 다리에 진입할 수 있는지 확인합니다. 다리의 현재 무게와 비교하여 트럭이 진입 가능한 경우 리스트에 추가하고, 다리 위의 트럭들을 이동시킵니다.만약 현재 대기 중인 트럭이 다리의 무게 제한을..
[프로그래머스] [3차] n진수 게임 코드 힌트10진수를 n진수로 변환하기주어진 숫자를 원하는 진수로 변환하려면, 나머지 연산을 반복하여 숫자를 변환해야 합니다.예를 들어, 16진수로 변환할 때 10 이상은 'A', 'B' 등으로 표시됩니다. 숫자를 변환한 후 결과는 역순으로 정리합니다.이 과정을 통해 0부터 순차적으로 모든 숫자를 n진수로 변환하게 됩니다.순번에 맞는 숫자 선택하기각 숫자를 변환한 후, 변환된 진법 숫자를 순서대로 확인하면서 자기 차례에 해당하는 숫자만 선택합니다.n진수로 변환된 숫자에서 각 자릿수는 차례대로 참가자에게 할당됩니다. 자신의 순번에 맞는 숫자를 찾아서 결과에 추가합니다.순번 관리플레이어의 차례는 순환적으로 돌아가므로, 순번을 % 연산으로 관리합니다.예를 들어, 참가자가 4명이라면 0, 1, 2, 3으로 순서가..