์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

Day 17. ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹(Java)

KASSIA 2024. 3. 1. 23:16

1. ํŠน์ • ๋ฌธ์ž์—ด๋กœ ๋๋‚˜๋Š” ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

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

 

โ–ผ ๋ฐฉ๋ฒ• 2

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

 

2. ๋ฌธ์ž์—ด์ด ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€ ์„ธ๊ธฐ

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int n = pat.length();
        
        for(int i = 0; i + n <= myString.length(); i++) {
            if(myString.substring(i, i + n).equals(pat)) {
                answer++;
            }
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        for(int i = 0; i < myString.length(); i++) {
            if(myString.substring(i).startsWith(pat)) {
                answer++;
            }
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 3

import java.util.stream.IntStream;

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        answer = (int) IntStream.range(0, myString.length())
            .limit(myString.length() - pat.length() + 1)
            .filter(i -> myString.substring(i, i + pat.length()).equals(pat))
            .count();
        
        return answer;
    }
}
startsWith() : ๋Œ€์ƒ ๋ฌธ์ž์—ด์ด ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜(true / false ๊ฐ’์„ ๋ฆฌํ„ด)
endsWith() : ํ•จ์ˆ˜๋Š” ๋Œ€์ƒ ๋ฌธ์ž์—ด์ด ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด๋กœ ๋๋‚˜๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜(true / false ๊ฐ’์„ ๋ฆฌํ„ด)

 

3. ad ์ œ๊ฑฐํ•˜๊ธฐ

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

import java.util.List;
import java.util.ArrayList;

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

 

โ–ผ ๋ฐฉ๋ฒ• 2

import java.util.Arrays;

class Solution {
    public String[] solution(String[] strArr) {
        String[] answer = {};
        
        answer = Arrays.stream(strArr).filter(s -> !s.contains("ad")).toArray(String[]::new);
        
        return answer;
    }
}

 

4. ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ 1

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

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

 

5. ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ 2

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

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

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        
        answer = my_string.trim().split("\\s+");
        
        return answer;
    }
}
์ •๊ทœํ‘œํ˜„์‹
[] : ๋ฌธ์ž์…‹, ๊ด„ํ˜ธ์•ˆ์˜ ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ •๊ทœ์‹ ๋ฌธ๋ฒ•์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ฑฐ๋‚˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
\\s : ๊ณต๋ฐฑ ๋ฌธ์ž, ํƒญ๋งŒ์„ ํ—ˆ์šฉ๋งŒ ์ •๊ทœ ํ‘œํ˜„์‹
+ : ํ•˜๋‚˜ ๋˜๋Š” ๋งŽ์ด (one or more)

trim() : ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ณผ ๋์—์„œ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•

 

โ–ผ ๋ฐฉ๋ฒ• 3

import java.util.Arrays;

class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        
        answer = Arrays.stream(my_string.split(" ")).filter(s -> !s.equals("")).toArray(String[]::new);
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 4

import java.util.stream.Stream;

class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        
        answer = Stream.of(my_string.split(" ")).filter(s -> s.length() > 0).toArray(String[]::new);
        
        return answer;
    }
}