Recent Posts
Recent Comments
밍쎄의 코딩공간
프로그래머스 LV.2 - 광물캐기 본문
소싯적에 우리는 한컴타자를 했다. ㅎㅎ
그때 광물캐기라는 코너 속 코너 게임이 있엇는디,,, 정감가드라요..~
import java.util.*;
class Solution {
public int solution(int[] picks, String[] minerals) {
int answer = 0;
int num = picks[0] + picks[1] + picks[2];
int[][] section = new int[minerals.length / 5 + 1][3];
int i, pick;
for(i = 0; i < minerals.length && num > 0; i++) {
switch(minerals[i].charAt(0))
{
case 'd':
section[i / 5][0] += 1;
section[i / 5][1] += 5;
section[i / 5][2] += 25;
break;
case 'i':
section[i / 5][0] += 1;
section[i / 5][1] += 1;
section[i / 5][2] += 5;
break;
case 's':
section[i / 5][0] += 1;
section[i / 5][1] += 1;
section[i / 5][2] += 1;
}
if(i % 5 == 4) num--;
}
Arrays.sort(section, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[2] < o2[2])
return 1;
else
return -1;
}
});
for(i = 0, pick = 0; i < section.length; i++) {
while(pick < 3 && picks[pick] == 0) pick++;
if(pick == 3) break;
picks[pick]--;
answer += section[i][pick];
}
return answer;
}
}
설명
- picks: 크기가 3인 배열로, 각 요소는 채굴 가능한 양을 나타냅니다. 이 배열은 picks[0], picks[1], picks[2]의 값을 가집니다.
- minerals: 보석의 종류를 나타내는 문자열 배열입니다. 각 문자열은 'd', 'i', 's' 중 하나의 문자로 시작합니다.
- section: 2차원 배열로, 보상을 계산하기 위한 정보를 저장합니다. section[i][0]은 보상 종류 'd'에 대한 수량, section[i][1]은 'i'에 대한 수량, section[i][2]는 's'에 대한 수량을 의미합니다.
- num: 총 채굴 가능한 양을 나타냅니다. 초기 값은 picks[0] + picks[1] + picks[2]입니다.
- 채굴 및 보상 계산 과정:
- for 루프를 통해 minerals 배열을 순회하며 보상을 계산합니다.
- 각 문자열의 첫 번째 글자를 확인하여 'd', 'i', 's'에 따라 section 배열을 업데이트합니다.
- i % 5 == 4 일 때마다 num을 감소시킵니다. 이는 5개의 보상 정보를 처리한 것을 의미합니다.
- section 배열 정렬:
- Arrays.sort를 사용하여 section 배열을 's' 보상의 크기에 따라 내림차순으로 정렬합니다.
- 보상 할당 과정:
- for 루프를 통해 정렬된 section 배열을 순회합니다.
- picks 배열에서 0이 아닌 값이 있는 경우 해당 보상을 할당하고 picks 값을 1 감소시킵니다.
- answer 변수에 보상 값을 누적합니다.
밑 사이트 참고했습니다~~
프로그래머스 광물 캐기 java
문제링크문제 조건을 읽어보면, 어차피 곡괭이 하나 들었으면 마인크래프트마냥 앞에꺼 다섯개 무조건 캐야한다.1-1 마인크래프트랑은 다르게 앞에 놓여진 블록들을 알때, 어떻게 캐야 제일 효
velog.io
https://school.programmers.co.kr/learn/courses/30/lessons/172927
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90
'프로그래머스 > 프로그래머스 LV.2' 카테고리의 다른 글
프로그래머스 LV.2 - 점 찍기 (0) | 2023.08.27 |
---|---|
프로그래머스 LV2 - 구명보트 (0) | 2023.08.27 |
프로그래머스 LV.2 - 삼각 달팽이 (0) | 2023.08.22 |
프로그래머스 LV.2 - 무인도 여행 (0) | 2023.08.20 |
프로그래머스 LV.2 - 교점에_별_만들기 (0) | 2023.08.12 |