CodeWars 여든 일곱 번째 문제

Updated:

Range Extraction

public static String rangeExtraction(int[] arr) {
    
    List<String> rangeList = new ArrayList<String>();
    int start = arr[0];
    int beforeNumber = arr[0];

    for(int i = 1; i < arr.length; i++) {
        if( beforeNumber +1 == arr[i]) {
            beforeNumber = arr[i];
        } else {
            addRangeList(rangeList, start, beforeNumber);

            start = arr[i];
            beforeNumber = arr[i];
        }
    }

    addRangeList(rangeList, start, beforeNumber);

    return String.join(",", rangeList);
}

public static void addRangeList(List<String> rangeList, int start, int beforeNumber) {
    if(start == beforeNumber) {
        rangeList.add(String.valueOf(start));
    } else if(start+1 == beforeNumber){
        rangeList.add(String.valueOf(start));
        rangeList.add(String.valueOf(beforeNumber));
    } else {
        rangeList.add(start + "-" + beforeNumber);
    }
}
  • 숫자들의 연속을 하이픈(-)으로 묶어서 출력하는 문제였다.
  • 4kuy 치고는 어렵지 않았다.
  • Best 코드들도 차이는 없었다.