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

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

KASSIA 2024. 3. 1. 23:20

1. ๋’ค์—์„œ 5๋“ฑ ์œ„๋กœ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int n = 5;
        int[] answer = new int[num_list.length - n];
        
        Arrays.sort(num_list);
        
        for(int i = n; i < num_list.length; i++) {
            answer[i - n] = num_list[i];
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = {};
        
        Arrays.sort(num_list);
        
        answer = Arrays.copyOfRange(num_list, 5, num_list.length);
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 3

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = {};
        
        answer = Arrays.stream(num_list).sorted().skip(5).toArray();
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 4

import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = {};
        
        Arrays.sort(num_list);
        
        answer = IntStream.range(5, num_list.length).map(i -> num_list[i]).toArray();
        
        return answer;
    }
}

 

2. ์ „๊ตญ ๋Œ€ํšŒ ์„ ๋ฐœ ๊ณ ์‚ฌ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

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

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        int[][] rankIdx = new int[rank.length][2];
        List<Integer> answerList = new ArrayList<>();
        
        for(int i = 0; i < rank.length; i++) {
            rankIdx[i][0] = rank[i];
            rankIdx[i][1] = i;
        }
        
        Arrays.sort(rankIdx, (a, b) -> a[0] - b[0]);
        
        for(int i = 0; i < attendance.length; i++) {
            if(attendance[rankIdx[i][1]]) {
                answerList.add(rankIdx[i][1]);
            }
            
            if(answerList.size() == 3) {
                break;
            }
        }
        
        answer = 10000 * answerList.get(0) + 100 * answerList.get(1) + answerList.get(2);
        
        return answer;
    }
}
์ˆซ์ž ๋ฐฐ์—ด ์ •๋ ฌ
(1) Lambda๋ฅผ ์ด์šฉํ•œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
์ˆซ์ž ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—์„œ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋นผ์ค€๋‹ค.
Integer[] NumArr = {-3, 2, 0, 1, 3, -2, -1};

Arrays.sort(NumArr, (a, b) -> a - b);
// [-3, -2, -1, 0, 1,  2,  3]โ€‹

(2) Lambda๋ฅผ ์ด์šฉํ•œ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
์ˆซ์ž ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ๋ฒˆ์งธ ์ธ์ž์—์„œ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋นผ์ค€๋‹ค.
Integer[] NumArr = {-3, 2, 0, 1, 3, -2, -1};

Arrays.sort(NumArr, (a, b) -> b - a);
// [3, 2, 1, 0, -1, -2, -3]โ€‹

 

โ–ผ ๋ฐฉ๋ฒ• 2

import java.util.stream.IntStream;
import java.util.Comparator;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        
        int[] result = IntStream.range(0, rank.length)
                                .filter(i -> attendance[i])
                                .boxed()
                                .sorted(Comparator.comparing(i -> rank[i]))
                                .mapToInt(i -> i)
                                .limit(3)
                                .toArray();
        
        answer = 10000 * result[0] + 100 * result[1] + result[2];
        
        return answer;
    }
}
boxed() ๋ฉ”์†Œ๋“œ
IntStream ๊ฐ™์ด ์›์‹œ ํƒ€์ž…์— ๋Œ€ํ•œ ์ŠคํŠธ๋ฆผ ์ง€์›์„ ํด๋ž˜์Šค ํƒ€์ž…(์˜ˆ: IntStream -> Stream<Integer>)์œผ๋กœ ์ „ํ™˜ํ•ด์ค€๋‹ค. ์ „์šฉ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ (์˜ˆ๋ฅผ ๋“ค์–ด int ์ž์ฒด๋กœ๋Š” Collection์— ๋ชป ๋‹ด๊ธฐ ๋•Œ๋ฌธ์— Integer ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ List<Integer> ๋กœ ๋‹ด๊ธฐ ์œ„ํ•ด) ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค.

 

3. ์ •์ˆ˜ ๋ถ€๋ถ„

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

 

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

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

programmers.co.kr

class Solution {
    public int solution(double flo) {
        int answer = 0;
        
        answer = (int) flo;
        
        return answer;
    }
}

 

4. ๋ฌธ์ž์—ด ์ •์ˆ˜์˜ ํ•ฉ

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

 

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

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

programmers.co.kr

โ–ผ ๋ฐฉ๋ฒ• 1

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        for(String s : num_str.split("")) {
            answer += Integer.parseInt(s);
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 2

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        for(int i = 0; i < num_str.length(); i++) {
            answer += Integer.parseInt("" + num_str.charAt(i));
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 3

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        for(int i = 0; i < num_str.length(); i++) {
            answer += (int) num_str.charAt(i) - 48;
        }
        
        return answer;
    }
}

 

โ–ผ ๋ฐฉ๋ฒ• 4

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        answer = num_str.chars().map(c -> c - 48).sum();
        
        return answer;
    }
}

 

5. ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

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

 

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

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

programmers.co.kr

class Solution {
    public int solution(String n_str) {
        int answer = 0;
        
        answer = Integer.parseInt(n_str);
        
        return answer;
    }
}