1 분 소요

ATM 문제

실수

저번 코드에서 내가 NumberFormat 오류가 뜬이유는

for (String input : inputs) {
            int x = Integer.parseInt(input);
            y.add(x);
        }

해당 부분 때문이다.

입력 예제에서는

5
3 1 4 3 2

이렇게 첫 정수를 받고

그이후 2번째줄 입력 받을때 숫자와 공백이 같은 라인에 존재한다.

즉 for문으로 값을 하나씩 받아서 배열안에 넣은 수들이 아니라

하나의 string문으로 공백과 함께 입력한 것이라고 추측하고 한번 시도를 해보았다.

String[] inputs = br.readLine().split(" ");
        
        for (String input : inputs) {
            int x = Integer.parseInt(input);
            y.add(x);
        }

String배열안에 입력 값을 받고 해당 배열을 값들을 구분할때 “ “ 즉 공백으로 구분을하여 배열안에 저장 하였다.

이후 string배열 안에 있는 값들을 integer로 int x에 입력 받은후 list변수중 하나인 y에다가 값을 넣어주니 해결 되었다.

전체 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n = Integer.parseInt(br.readLine());
        int sum = 0;
        int answer = 0;
        
        List<Integer> y = new ArrayList<>();
        List<Integer> sums = new ArrayList<>();
        String[] inputs = br.readLine().split(" ");
        
        for (String input : inputs) {
            int x = Integer.parseInt(input);
            y.add(x);
        }
        
        Collections.sort(y);
        
        for(int i = 0; i < n; i++) {
            sum += y.get(i);
            sums.add(sum);
        }

        for(int enter : sums){
            answer += enter;
        }
        
        System.out.println(answer);
        
        bw.flush();
        bw.close();
        br.close();
    }
}

댓글남기기