Day 21. ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋(Java)
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;
}
}