import java.util.*;
class Solution {
public int solution(int[] pri, int loca) {
int answer = 0;
int max = pri[0];
int idx = 0;
ArrayList<Integer> arr = new ArrayList<>();
while (arr.size() != pri.length) {
// 현재 배열에서의 최댓값
int realMax = Arrays.stream(pri).max().getAsInt();
// 구해진 idx 부터 배열 끝까지 중에 최댓값
for (int i = idx; i < pri.length; i++) {
if (max < pri[i]) {
max = pri[i];
idx = i;
}
}
// 만약 배열 최댓값이 max 보다 크다면 배열 앞에서 부터 다시 조회 해봐야함 따라서
// else 일시 idx 를 0으로 초기화 ( 처음부터 조회 )
// max 가 크면 arr에 idx 추가
if (max >= realMax) {
arr.add(idx);
pri[idx] = 0;
max = 0;
}else{
idx = 0;
}
// 만약 배열의 끝까지 조회해봤다면다시 처음부터 조회
if (idx == pri.length - 1) {
idx = 0;
}
}
// 저장된 arr에서 주어진 location 위치에 있는 알파벳의 위치 구하기
// char에서 대문자 A는 65부터 시작한다.
// 따라서 굳이 문자로 변환할 필요 없이 (65 + arr)의 값이 (loca + 65) 와 값이 같으면
// 그 값의 인덱스만 반환해 주면 된다. 하지만 배열 인덱스는 0부터 시작하기 때문에 + 1
for (int i = 0; i < arr.size(); i++) {
int n = 65 + arr.get(i);
if (n == (65 + loca)) {
return i + 1;
}
}
return answer;
}
}
좋은 방법은 아닌듯 다음엔 queue를 이용해서 수정해보자
'CT' 카테고리의 다른 글
문자열 내 마음대로 정렬하기 (0) | 2022.08.25 |
---|---|
폰켓몬 (0) | 2022.05.26 |
신규아이디 추천 (0) | 2022.04.19 |
완주하지 못한 선수(해시) (0) | 2022.04.14 |