[프로그래머스/java/Lv.0] x 사이의 개수

2025. 4. 16. 11:20·코테/프로그래머스 JAVA Lv.0

 

 

 

* 문제풀이

class Solution {
    public int[] solution(String myString) {
        String[] arr = myString.split("x", -1);
        int[] answer = new int[arr.length];
        
        for(int i = 0; i < arr.length; i++){
            answer[i] = arr[i].length();
        }
        
        return answer;
    }
}

 

 

======================================================================

 

class Solution {
    public int[] solution(String myString) {
        String[] arr = myString.split("x");
        int[] answer = new int[arr.length];
        
        for(int i = 0; i < arr.length; i++){
            answer[i] = arr[i].length();
        }
        
        return answer;
    }
}

 

처음에 위 코드처럼 작성했는데 테스트 1에서 다른 결과값이 나왔다. 

아무리 생각해도 모르겠어서 검색해보니 split()메서드의 두번째 인자에 -1을 넣어줘야 했다.

왜? 

split() 메서드의 기본 동작 >>끝에 생긴 빈 문자열은 자동으로 제거<<

그러므로 split("x")로 작성할 경우 [1,2,1,0,1]이 출력된다. 맨 뒤의 x는 제거되니까!

 

split("x", -1)에서 -1은 끝에 있는 빈 문자열도 포함시키기 위함이다.

[1,2,1,0,1,0]이 출력됨.

 

 

* split() 설명

https://amy-g.tistory.com/91

 

 

 

* 프로그래머스 다른 풀이

import java.util.ArrayList;

class Solution {
    public int[] solution(String myString) {
        myString += "x";
        ArrayList<Integer> arr = new ArrayList<>();

        for (int i = 0, cnt = 0; i < myString.length(); i++){
            if (myString.charAt(i) != 'x'){
                cnt++;
            } else {
                arr.add(cnt);
                cnt = 0;
            }
        }

        return arr.stream().mapToInt(Integer::intValue).toArray();
    }
}
import java.util.ArrayList;

class Solution {

    public int[] solution(String myString) {
        ArrayList<Integer> list = new ArrayList<>();
        String[] tmp = myString.split("x");
        for (int i = 0; i < tmp.length; i++) {
            list.add(tmp[i].length());
        }
        if(myString.endsWith("x")) {
            list.add(0);
        }
        int[] answer = new int[list.size()];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}
class Solution {
    public int[] solution(String myString) {
        String[] split = (myString + " ").split("x");
        int[] answer = new int[split.length];

        for (int i = 0; i < answer.length; i++) {
            answer[i] = split[i].replace(" ", "").length();
        }
        return answer;
    }
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java/Lv.0] 9로 나눈 나머지  (0) 2025.04.22
[프로그래머스/java/Lv.0] 순서 바꾸기  (0) 2025.04.21
[프로그래머스/java/Lv.0] 문자열 정렬하기 (2)  (0) 2025.04.15
[프로그래머스/java/Lv.0] 암호 해독  (0) 2025.04.10
[프로그래머스/java/Lv.0] 문자열 정렬하기 (1)  (0) 2025.04.03
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java/Lv.0] 9로 나눈 나머지
  • [프로그래머스/java/Lv.0] 순서 바꾸기
  • [프로그래머스/java/Lv.0] 문자열 정렬하기 (2)
  • [프로그래머스/java/Lv.0] 암호 해독
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ORACLE에러
    부스트코스
    부스트코스강의
    코딩테스트_입문
    책첵개발일지
    springbot
    에러
    CS50
    프로그래머스
    업무자동화
    데이터연동
    git명령어
    알고리즘
    Java
    lombok
    코테
    오라클에러
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java/Lv.0] x 사이의 개수
상단으로

티스토리툴바