본문 바로가기

728x90

프로그래머스(Java)

(192)
[프로그래머스] 택배상자 코드 힌트순서 확인:1번 상자부터 시작하여 order 배열의 원하는 순서대로 상자를 트럭에 싣는 것이 목표입니다.상자를 순서대로 트럭에 실을 수 있는지 확인하며 진행합니다.스택 사용:만약 현재 상자를 바로 트럭에 실을 수 없을 경우, 스택을 사용하여 임시로 상자를 저장합니다.스택은 LIFO(Last In, First Out) 구조를 가지며, 가장 나중에 넣은 상자를 먼저 꺼낼 수 있습니다.스택과 비교:스택에 상자가 쌓인 상태에서, 현재 순서에 맞는 상자가 스택의 맨 위에 있다면, 스택에서 상자를 꺼내 트럭에 실습니다.만약 스택의 맨 위 상자가 현재 순서에 맞지 않으면, 상자를 더 이상 실을 수 없으므로 반복을 종료합니다.결과 반환:최종적으로 트럭에 실을 수 있는 최대 상자 개수를 계산하여 반환합니다.이를..
[프로그래머스] 등굣길 코드 힌트웅덩이 처리:웅덩이(puddles)로 지정된 셀은 경로 계산에서 제외됩니다.이 셀들은 -1로 표시하여, 이후 경로 계산에서 무시하도록 처리합니다.초기화:첫 번째 행과 첫 번째 열의 값을 초기화합니다.만약 웅덩이로 인해 막혀있는 경우 해당 경로는 막히며, 그렇지 않은 경우 1로 설정합니다.이는 초기 경로 설정을 위한 작업입니다.동적 프로그래밍:나머지 셀들은 동적 프로그래밍을 이용하여 계산합니다.각 셀의 경로 수는 왼쪽과 위쪽에서 올 수 있는 경로의 수를 합산하여 계산합니다.이 과정에서 현재 셀이 웅덩이인지 확인하고, 웅덩이가 아닌 경우에만 경로 수를 누적합니다.결과 반환:최종적으로 도착 지점 (m-1, n-1)의 셀에 저장된 경로 수를 반환합니다.결과는 매우 큰 수를 다룰 수 있으므로, 1,000..
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 코드 힌트턴제 게임:게임은 턴제로 진행되며, 몬스터가 공격하는 턴에는 회복을 할 수 없습니다.반면, 공격이 없는 준비 턴에는 체력을 회복할 수 있습니다.기본 체력 회복:매 턴마다 기본 회복량이 적용됩니다.공격이 발생하기 전까지 회복은 계속되며, 이로 인해 체력이 점진적으로 증가합니다.추가 회복:일정 시간마다 추가적인 회복이 발생합니다.이 회복은 주기적으로 일어나며, 기본 회복과 함께 체력을 추가로 회복시킬 수 있습니다.공격 처리:몬스터의 공격이 발생하면 현재 체력에서 공격 데미지만큼 감소합니다.공격 후 회복 주기가 초기화되므로, 다음 공격까지 체력을 최대한 회복하는 것이 중요합니다.게임 종료 조건:체력이 0 이하로 떨어지면 즉시 게임이 종료됩니다.모든 공격을 견뎌낸 후 남은 체력이 게임의 최종 결과로 반..
[프로그래머스] N으로 표현 코드 힌트문제 개요:주어진 숫자 N을 최대 8번까지 사용하여 특정 숫자 number를 만들 수 있는 최소 사용 횟수를 계산합니다.덧셈, 뺄셈, 곱셈, 나눗셈과 같은 연산을 반복적으로 수행하며 최적의 해를 찾습니다.초기화:N을 사용하여 만들 수 있는 모든 숫자를 HashMap에 초기화하고, 각 숫자를 만들기 위해 필요한 최소 사용 횟수를 저장합니다.재귀적 연산:N을 사용하여 가능한 모든 연산을 수행하고, 결과를 HashMap에 기록합니다.이미 계산된 숫자의 경우 더 적은 횟수로 동일한 숫자를 만들 수 있는지 확인하여 업데이트합니다.8번 이상의 연산은 의미가 없으므로 재귀 깊이를 제한합니다.최종 결과:HashMap에서 목표 숫자 number에 대한 최소 연산 횟수를 찾아 반환합니다.만약 목표 숫자를 만들 수..
[프로그래머스] 주차 요금 계산 코드 힌트기록 관리:각 차량의 입차 및 출차 시간을 관리하여, 차량이 얼마나 오랫동안 주차했는지를 계산합니다.출차 기록이 없는 차량은 마지막 시간인 23:59에 자동으로 출차 처리됩니다.요금 계산:차량이 기본 시간 이하로 주차한 경우, 기본 요금만 부과됩니다.기본 시간을 초과한 경우, 추가 시간에 대해 단위 요금을 적용하여 최종 요금을 계산합니다.추가 시간 계산 시, (현재 시간 - 주차 시간 - 기본 주차 시간) / 추가 시간 단위가 소수점으로 나누어떨어지지 않으면 올림 처리를 해야 합니다.입출차 처리:차량이 입차할 때는 해당 차량의 입차 시간을 기록합니다.차량이 출차할 때는 현재 시간과 입차 시간의 차이를 이용해 총 주차 시간을 계산하고 기록합니다.출차가 완료된 후, 차량의 입차 기록은 삭제됩니다.최..
[프로그래머스] 스킬트리 코드 힌트스킬 순서 이해:주어진 skill 문자열은 스킬의 순서를 정의하며, 이 순서대로 스킬을 배워야만 합니다.예를 들어, skill이 "CBA"라면, 스킬 트리에서 C가 먼저, B가 그다음, A가 마지막으로 와야 합니다.필수 스킬 확인:각 스킬 트리(skillTrees)에 대해 필수 스킬들이 올바른 순서로 나열되어 있는지 확인합니다.skill.indexOf(currentSkill)로 현재 스킬이 필수 스킬 목록에 있는지 확인합니다. 만약 포함되지 않았다면 무시합니다.순서 확인:만약 필수 스킬이 올바른 순서로 나타나지 않았다면, 해당 스킬 트리는 유효하지 않다고 판단합니다.스킬 트리의 유효성을 판단한 후, 유효한 스킬 트리의 개수를 증가시킵니다.결과 반환:모든 스킬 트리를 확인한 후, 유효한 스킬 트리..
[프로그래머스] [1차] 다트 게임 코드 힌트문자열 파싱 및 점수 계산:주어진 dartResult 문자열을 순차적으로 탐색하며, 각 문자를 처리해 점수를 계산합니다.점수는 세 라운드로 이루어져 있으며, 각 라운드는 숫자(점수)와 보너스(S, D, T), 옵션(*, #)으로 구성됩니다.점수 처리:각 라운드의 점수는 숫자 부분에서 추출합니다. 1 다음에 0이 나오는 경우는 10점으로 처리해야 하므로, 이를 특별히 체크합니다.라운드의 점수는 lastPoint와 currentPoint로 관리되며, 마지막에 최종적으로 합산됩니다.보너스 처리:보너스 문자인 S, D, T는 각각 1제곱, 2제곱, 3제곱을 의미합니다.각 보너스 문자를 만나면, 현재 점수에 제곱 연산을 수행하여 보너스를 적용합니다.옵션 처리:*(스타상)은 현재 라운드와 이전 라운드의 점..
[프로그래머스] 땅따먹기 코드 힌트문제 이해 및 접근 방식:이 문제는 "땅따먹기"라는 게임을 기반으로 합니다. 각각의 행은 특정 턴에서 선택할 수 있는 네 개의 땅을 나타내고, 각 땅에는 점수가 부여됩니다. 같은 열의 땅은 연속해서 선택할 수 없습니다.목표는 마지막 행에 도달했을 때 얻을 수 있는 최대 점수를 계산하는 것입니다.동적 계획법을 활용한 점수 계산:각 행에서 가능한 최대 점수를 누적하는 방식으로 계산합니다.land[i][j]에는 현재 위치까지의 최대 점수가 저장되며, 이전 행에서 같은 열을 제외한 최대 값을 더해나갑니다.즉, land[i][j]에는 i-1행에서 j열을 제외한 최대 점수가 더해집니다.이동 제한 처리:연속해서 같은 열을 선택할 수 없으므로, j열을 제외한 k열의 최대 점수를 선택해야 합니다. 이를 위해 내..

728x90