전국 대회 선발 고사 Lv. 0

박영준·2023년 8월 26일
0

코딩테스트

목록 보기
293/300
class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        return answer;
    }
}

해결법

방법 1

import java.util.Arrays;

class Solution {
   	public int solution(int[] rank, boolean[] attendance) {
		int answer = 0;
		int sort[] = new int[rank.length];
        
        // sort 배열 생성
		for (int i = 0; i < rank.length; i++) {
			if (attendance[i]) {
				sort[i] = rank[i];
			} else {
				rank[i] = Integer.MAX_VALUE;
			}
		}
        
        // 오름차순 정렬
		Arrays.sort(rank);

		// 10000 × a + 100 × b + c 계산
		for (int i = 0; i < sort.length; i++) {
			if (rank[0] == sort[i]) {
				answer += i * 10000;
			} else if (rank[1] == sort[i]) {
				answer += i*100;
			} else if (rank[2] == sort[i]) {
				answer += i;
			}
		}

		return answer;
	}
}

arrayList 를 사용하지 않아도 가능하다.

sort 배열 생성

  • true 일 경우, rank 의 순위를 sort 배열로 그대로 옮기고,
    false 일 경우, 정수의 최대값 을 넣어버린다.

    • 이때, rank 배열에서 순위를 받지 못한 sort 배열들 중 일부는 int 의 기본값인 0이 그 자리를 차지하게 된다.
  • if (attendance[i])

    • boolean 타입의 true 조건식은 이렇게 나타낸다.
      • attendance[i] = ture 와 같은 방법으로 표현하진 않는다.
  • Integer.MAX_VALUE

    • 정수의 최대값

전국 대회 선발 고사 Lv. 0

profile
개발자로 거듭나기!

0개의 댓글