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

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

KASSIA 2024. 3. 1. 23:14

1. ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ˆ˜์—ด ๋ณ€ํ™˜ํ•˜๊ธฐ 1

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = arr.clone();
        
        for(int i = 0; i < answer.length; i++) {
            if(answer[i] >= 50 && answer[i] % 2 == 0) {
                answer[i] /= 2;
            } else if(answer[i] < 50 && answer[i] % 2 == 1) {
                answer[i] *= 2;
            }
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        
        answer = Arrays.stream(arr).map(i -> i >= 50 && i % 2 == 0 ? i / 2 : i < 50 && i % 2 == 1 ? i * 2 : i).toArray();
        
        return answer;
    }
}

 

2. ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ˆ˜์—ด ๋ณ€ํ™˜ํ•˜๊ธฐ 2

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        int count = 0;
        int[] beforeArr = new int[arr.length];
        
        while(count != arr.length) {
            count = 0;
            beforeArr = arr.clone();
            
            for(int i = 0; i < arr.length; i++) {
                if(arr[i] >= 50 && arr[i] % 2 == 0) {
                    arr[i] /= 2;
                } else if(arr[i] < 50 && arr[i] % 2 == 1) {
                    arr[i] = arr[i] * 2 + 1;
                }
                
                if(beforeArr[i] == arr[i]) {
                    count++;
                }
            }
            
            answer++;
        }
        
        return answer - 1;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        int count = 0;
        int[] beforeArr = new int[arr.length];
        
        while(true) {
            boolean changed = false;
            
            for(int i = 0; i < arr.length; i++) {
                int temp = arr[i];
                
                if(arr[i] >= 50 && arr[i] % 2 == 0) {
                    temp = arr[i] / 2;
                } else if(arr[i] < 50 && arr[i] % 2 == 1) {
                    temp = arr[i] * 2 + 1;
                }
                
                if(arr[i] != temp) {
                    arr[i] = temp;
                    changed = true;
                }
            }
            
            if(!changed) {
                break;
            }
            
            answer++;
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 3

import java.util.Arrays;

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        
        while(true) {
            int[] afterArr = Arrays.copyOf(arr, arr.length);
            
            for(int i = 0; i < arr.length; i++) {
                if(afterArr[i] >= 50 && afterArr[i] % 2 == 0) {
                    afterArr[i] /= 2;
                } else if(afterArr[i] < 50 && afterArr[i] % 2 == 1) {
                    afterArr[i] = afterArr[i] * 2 + 1;
                }
            }
            
            if(Arrays.equals(arr, afterArr)) {
                break;
            }
            
            arr = afterArr;
            answer++;
        }
        
        return answer;
    }
}

 

3. 1๋กœ ๋งŒ๋“ค๊ธฐ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        
        for(int i = 0; i < num_list.length; i++) {
            while(num_list[i] != 1) {
                if(num_list[i] % 2 == 0) {
                    num_list[i] /= 2;
                } else {
                    num_list[i] = (num_list[i] - 1) / 2;
                }
                
                answer++;
            }
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        
        for(int num : num_list) {
            while(num != 1) {
                num /= 2;
                answer++;
            }
        }
        
        return answer;
    }
}

 

4. ๊ธธ์ด์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(int[] num_list) {
        int answer = num_list.length >= 11 ? 0 : 1;
        
        for(int num : num_list) {
            if(num_list.length >= 11) {
                answer += num;
            } else {
                answer *= num;
            }
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        
        if(num_list.length >= 11) {
            answer = Arrays.stream(num_list).reduce(0, Integer::sum);
        } else {
            answer = Arrays.stream(num_list).reduce(1, (x, y) -> x * y);
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 3

import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        
        answer = num_list.length >= 11 ? Arrays.stream(num_list).sum() : Arrays.stream(num_list).reduce(1, (x, y) -> x * y);
        
        return answer;
    }
}
reduce() : stream์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์š”์†Œ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰

 

5. ์›ํ•˜๋Š” ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        if(myString.toLowerCase().contains(pat.toLowerCase())) {
            answer = 1;
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        if(myString.toLowerCase().indexOf(pat.toLowerCase()) != -1) {
            answer = 1;
        }
        
        return answer;
    }
}
indexOf() : ํŠน์ • ๋ฌธ์ž๋‚˜ ๋ฌธ์ž์—ด์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ '-1'์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
lastIndexOf() : ํŠน์ • ๋ฌธ์ž๋‚˜ ๋ฌธ์ž์—ด์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋’ค์—์„œ ๋ถ€ํ„ฐ ์ฐพ์•„ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ '-1'์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ