inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 공백으로 구분하기 2

    silver's avatar
    silver
    Feb 25, 2025
    [알고리즘문제풀기] 공백으로 구분하기 2
    Contents
    문제내가 작성한 오답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181868

    내가 작성한 오답

    : String[] answer = new String[my_string.length()-count];에서 전체 단어의 개수에서 count를 제외했다.
    class Solution { public String[] solution(String my_string) { String[] array = my_string.split(" "); int count = 0; for(String s : array){ if(s.isEmpty()) count++; } String[] answer = new String[my_string.length()-count]; int idx = 0; for(String s : array){ if(s.isEmpty()) continue; else answer[idx++] = s; } return answer; } }
    notion image

    내가 작성한 정답1

    class Solution { public String[] solution(String my_string) { String[] array = my_string.split(" "); int count = 0; for(String s : array){ if(s.isEmpty()) count++; } String[] answer = new String[array.length-count]; int idx = 0; for(String s : array){ if(s.isEmpty()) continue; else answer[idx++] = s; } return answer; } }

    내가 작성한 정답

    import java.util.*; class Solution { public String[] solution(String my_string) { String[] answer = {}; String[] array = my_string.trim().split(" "); List<String> list = new ArrayList<>(); for(String s : array){ if(!s.isEmpty()) list.add(s); } return list.toArray(new String[list.size()]); } }

    다른 사람들의 정답

    while이용해서 공백 한칸으로 줄이기

    class Solution { public String[] solution(String my_string) { String[] answer = null; // 공백이 두 칸 이상 나오지 않도록 아래의 반복문을 수행한다. // 각 공백이 한 칸만 나오면 반복문을 빠져나오고 그 공백 하나로 구분한다. while (my_string.contains(" ")) { my_string = my_string.replace(" ", " "); } // 공백으로 시작하면 그 공백은 제거해야 한다. if (my_string.startsWith(" ")) { my_string = my_string.substring(1, my_string.length()); } answer = my_string.split(" "); return answer; } }
     

    정규식 이용

    class Solution { public String[] solution(String my_string) { return my_string.trim().split("[ ]+"); } }
    💡
    [ ]+ 의미
    • [ ] → 스페이스( ) 한 칸만 인식
    • 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등은 인식하지 못함!
    • + → 하나 이상 연속된 스페이스( )만 하나로 묶음
    특징
    ✔ 오직 스페이스( )만 공백으로 처리
    ✔ 탭(\t), 줄바꿈(\n)은 따로 처리되지 않음
    class Solution { public String[] solution(String myString) { // \\s → 모든 공백 문자(whitespace) => 스페이스( ), 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등 모든 공백 문자가 포함 // + → 하나 이상 연속된 공백을 하나로 묶어서 처리함 return myString.trim().split("\\s+"); } }
    💡
    \\s+ 의미
    • \\s → 공백 문자(whitespace) 를 의미.
    • 여기에는 스페이스( ), 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등 모든 공백 문자가 포함됨.
    • + → 하나 이상 연속된 공백을 하나로 묶어서 처리함.
    특징
    ✔ 스페이스뿐만 아니라, 탭(\t), 줄바꿈(\n)도 공백으로 처리
    ✔ 문자열 내 여러 개의 공백("   " 같은 것)도 하나로 처리
     
    Share article

    silver

    RSS·Powered by Inblog