728x90

※ 문제

출처 : (https://www.acmicpc.net/problem/11720)


1. 실패 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String str = scan.nextLine();
        str = str.trim(); // 앞뒤 문자공백 제거
        String[] strArr = str.split(" "); // 문자열 쪼개서 배열의 할당

        System.out.println(strArr.size()); // 배열 사이즈
    }
}

 - 위 코드도 예제 입ㆍ출력 테스트를 실행하면 정답은 나온다.

   아직 원인을 파악하지 못했지만 간혹 split를 사용하는 경우 배열 index(0)인 value가 ""→ 이렇게 할당되는 경우가 있다. 그래서 아래 코드처럼 일일히 조건문으로 체크한 다음 remove 해줘서 성공했다.

2. 성공 코드

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        ArrayList<String> arrayList = new ArrayList<>();

        String str = scan.nextLine();
//        str = str.trim();
        String[] strArr = str.split(" ");

        for(String strA : strArr) {
            arrayList.add(strA);
        }

        for(int i=0; i<arrayList.size(); i++) {
            if(arrayList.get(i).equals("")) arrayList.remove(i);
        }

        System.out.println(arrayList.size());
    }
}

 

728x90
TOP