점수 계산

이윤설·2024년 3월 15일

제출 코드

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] originalArray = new int[8];
        for (int i = 0; i < 8; i++) {
            String number = br.readLine();
            originalArray[i] = Integer.parseInt(number);
        }

        int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
        Arrays.sort(copiedArray);

        int[] tempArray = new int[5];
        for (int i = 0; i < 5; i++) {
            tempArray[i] = copiedArray[i + 3];
        }
        int sum = Arrays.stream(tempArray).sum();

//        int[] indexContainer = new int[5];
        List<Integer> indexContainer = new ArrayList<>();
        for (int i = 0; i < originalArray.length; i++) {
            for (int j = 0; j < tempArray.length; j++) {
                if (originalArray[i] == tempArray[j]) {
                    indexContainer.add(i + 1);
                }
            }
        }

        int[] answerArray = indexContainer.stream().mapToInt(Integer::intValue).toArray();

        System.out.println(sum);

        for (int i = 0; i < answerArray.length; i++) {
            if (i != answerArray.length - 1) {
                System.out.print(answerArray[i] + " ");
            } else {
                System.out.print(answerArray[i]);
            }
        }
    }
}

모범답안

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        HashMap<Integer, Integer> hm = new HashMap<>();
        ArrayList<Integer> al = new ArrayList<>();

        for (int i=0; i<8; i++){
            int tmp = Integer.parseInt(br.readLine());
            hm.put(tmp, i+1);
            al.add(tmp);
        }
        Collections.sort(al);

        int sum = 0;
        ArrayList<Integer> val = new ArrayList<>();
        for (int i=3; i<8; i++){
            int tmp = al.get(i);

            val.add(hm.get(tmp));
            sum += tmp;
        }
        Collections.sort(val);

        for (int i: val){
            sb.append(i).append(" ");
        }

        System.out.println(sum);
        System.out.println(sb.toString());
    }
}

배운점

  • Arrays.copyOf(원본배열, 원본 배열에서 복사해올 길이) 메소드로 배열을 복사할 수 있다.

https://velog.io/@kai6666/Java-System.arraycopy-%EC%99%80Arrays.copyOf%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EB%B0%B0%EC%97%B4-%EB%B3%B5%EC%82%AC

  • int[] array의 sum을 구하려면 스트림을 활용하면 된다.
    Arrays.stream(tempArray).sum();

  • .stream().mapToInt(Integer::intValue).toArray(); <- 를 사용하면 List를 int[] array로 변환할 수 있다.

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글