programmers 기초 Day17

Hwani·2024년 6월 17일

프로그래머스 DAY 1~25

목록 보기
43/51

문제 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

풀이

class Solution {
    public String solution(String myString, String pat) {
        int i = myString.lastIndexOf(pat);
        return myString.substring(0, i) + pat;
    }
}

설명

lastIndexof() 메서드는 문자열에서 마지막으로 나타나는 위치의 인덱스를 반환하는 메서드이고, 찾는 문자열이 없다면 -1을 반환한다.
substring() 메서드는 시작 인덱스에서 끝 인덱스 전까지의 부분의 문자열을 반환하는 메서드

  • lastIndexof() 메서드를 이용해 pat이 마지막으로 나타나는 위치를 찾는다.
  • 0부터 pat이 나타내는 위치까지의 문자열 + 매개변수 pat을 더해 반환한다.

문제 - 문자열이 몇 번 등장하는지 세기

풀이

class Solution {
    public int solution(String myString, String pat) {
        int index = 0;
        int count = 0;

        while ((index = myString.indexOf(pat, index)) != -1) {
            count++;
            index++;
        }

        return count;
    }
}

설명

myString 문자열에서 pat 문자열이 겹치더라도 몇 번 등장하는지 세는 문제

  • indexOf() 메서드를 사용하여 pat의 위치를 찾는다.
  • while문으로 반복적으로 검색하여 count로 등장 횟수를 세어 리턴한다.

문제 - ad 제거하기

풀이

import java.util.*;

class Solution {
    public String[] solution(String[] strArr) {
        ArrayList<String> result = new ArrayList<>();
        for (String str : strArr) {
            if (!str.contains("ad")) {
                result.add(str);
            }
        }

        // 결과를 배열로 변환
        String[] resultArr = result.toArray(new String[0]);

        return resultArr;
    }
}

설명

문자열 배열에서 "ad"를 포함하고 있다면 그 문자를 삭제한 배열을 리턴하는 문제

  • 새로운 ArrayList를 생성한다.
  • 배열에 담긴 값을 String 타입으로 치환 후 if문으로 "ad"문자를 포함하고 있지 않은 걸 ArrayList에 담아준다.
  • 값이 담겨진 ArrayList를 toArray() 메서드로 새로운 배열로 변환하고 리턴한다.

문제 - 공백으로 구분하기 1

풀이

class Solution {
    public String[] solution(String my_string) {
        return my_string.split(" ");
    }
}

설명

문자열의 공백을 기준으로 나누어 리턴하는 문제

  • split() 메서드로 공백을 기준으로 나누어 리턴한다.

문제 - 공백으로 구분하기 2

풀이

class Solution {
    public String[] solution(String my_string) {
        return my_string.trim().split("\\s+");
    }
}

설명

단어가 공백 한 개 이상으로 구분되어 있는 문자열을 기준으로 나누어 리턴하는 문제

  • trim() 메서드는 문자열의 앞뒤 공백을 제거하는 메서드
  • \s+는 하나 이상의 공백 문자를 의미하는 정규 표현식이다.
  • 정규 표현식 \s+를 사용하여 공백을 처리하고, trim() 메서드를 사용하여 문자열의 앞뒤 공백을 제거해서 리턴한다.
profile
개발자될거야

0개의 댓글