๐ 1. ๋ฌธ์ ์ค๋ช

์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
["We", "are", "the", "world!"]์ ๊ฐ ์์์ ๊ธธ์ด์ธ [2, 3, 3, 6]์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
["I", "Love", "Programmers."]์ ๊ฐ ์์์ ๊ธธ์ด์ธ [1, 4, 12]์ returnํฉ๋๋ค.
๐ก 2. ํ์ด๊ณผ์
โ๏ธ ํด๊ฒฐ๋ฐฉ๋ฒ
๋งค๊ฐ๋ณ์๋ก ๋ฐ์ strlist์ ๊ธธ์ด๋งํผ ๊ฒฐ๊ณผ๊ฐ์ ๋ด์ ๋ฐฐ์ด(lengths)์ ํ๋ ์ ์ธ ํด ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค๊ฐ๋ฉฐstrlist๊ฐ ์์(๋ฌธ์์ด)์ ๊ธธ์ด๋ฅผ ๊ตฌํด์ ๋ฐฐ์ด(lengths)์ ๋ด์ ๋ฆฌํดํ๋ค.
โ๏ธ length()์ length์ ์ฐจ์ด๋ง ์๋ฉด ์ฌ์ด ๋ฌธ์
`length` ๋๋ฐฐ์ด์์ ์ฌ์ฉ ๋๊ณ , `legnth();`๋ ๋ฌธ์์ด์์ ์ฌ์ฉ๋๋ค.
2-1. length
length๋ ๋ฐฐ์ด(array)์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋๋ณ์(ํ๋)์ด๊ณ ๊ดํธ ()๊ฐ ์์ผ๋ฉฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉ๋๋ค.
์ฌ์ฉ๋ฒ: `๋ฐฐ์ด๋ณ์๋ช .length`
int[] numbers = {1, 2, 3, 4, 5};
System.out.println(numbers.length); // ์ถ๋ ฅ: 5
์ ์ฝ๋์์ `numbers.length`๋ numbers๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ธ๋ค.
2-2.length()
length()๋ ๋ฌธ์์ด(String)์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ด๋ค. ๊ดํธ ()๊ฐ ์๊ณ , ๋ฌธ์์ด์ ๋ฌธ์ ๊ฐ์๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ค.
์ฌ์ฉ๋ฒ: `๋ฌธ์์ด๋ณ์๋ช
.length()`
String text = "Hello";
System.out.println(text.length()); // ์ถ๋ ฅ: 5
์ ์ฝ๋์์ text.length()๋ text๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ฌธ์์ด "Hello"์ ๋ฌธ์ ๊ฐ์(5)๋ฅผ ๋ฐํํ๋ค.
๐จโ๐ป 3. ์ ๋ต์ฝ๋
import java.util.*;
class Solution {
public int[] solution(String[] strlist) {
int[] lengths = new int[strlist.length];
for (int i = 0; i < strlist.length; i++) {
lengths[i] = strlist[i].length();
}
return lengths;
}
}
๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
โ 1. ์คํธ๋ฆผ์ผ๋ก ์์ฑํ ์ฝ๋
์คํธ๋ฆผ์ ์ฐ๋ฉด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด ์ง๊ธฐ ๋๋ฌธ์ ์คํธ๋ฆผ์ผ๋ก ์ด ์ฝ๋๋ค์ด ์ข์์๋ฅผ ๋ง์ด ๋ฐ๋ ์ถ์ธ์ด๋ค.
ํ์ง๋ง ์ฝ๋๊ฐ ์งง์์ง๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ์ค์ ๋ก ํ ์คํธ๋ฅผ ๋๋ ค ๋ณด๋ฉด ์คํธ๋ฆผ์ ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๋ค.
์๊ฐ ์ ํ ์๋ ๋ฌธ์ ์์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ถ์ฒํ๋ค.
import java.util.Arrays;
class Solution {
public int[] solution(String[] strList) {
return Arrays.stream(strList).mapToInt(String::length).toArray();
}
}
โ 2. ์์ธ์ฒ๋ฆฌ ์ฝ๋
class Solution {
public int[] solution(String[] strlist) {
int[] answer = {};
answer = new int[strlist.length];
if(strlist != null) {
for(int i =0; i<strlist.length; i++){
answer[i] = strlist[i].length();
}
}
return answer;
}
}

์ด ์ฌ๋์ ์์ธ์ฒ๋ฆฌ ์๋๋ฅผ ํ ๊ฒ๊น์ง๋ ์ข์์ผ๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ์์น๊ฐ ์ ์ ํ์ง ์๋ค.
ํ์ฌ if (strlist != null) ์ฒดํฌ๊ฐ for ๋ฃจํ๋ฅผ ๊ฐ์ธ๊ณ ์์ง๋ง, ๊ทธ๋ณด๋ค ๋จผ์ answer = new int[strlist.length];๋ฅผ ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์ strlist๊ฐ null์ผ ๊ฒฝ์ฐ, strlist.length๋ฅผ ํธ์ถํ๋ ์๊ฐ NullPointerException์ด ๋ฐ์ํ๋ค.
์ฆ, if (strlist != null) ์กฐ๊ฑด๋ฌธ์ด ์๋ฏธ๊ฐ ์์ด์ง๋ ๊ณณ์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ด๋ค.
โญ ์ฌ๋ฐ๋ฅธ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด null ์ฒดํฌ๋ฅผ ๋จผ์ ํ ํ, answer ๋ฐฐ์ด์ ์ด๊ธฐํํด์ผ ํ๋ค.
์๋์ฒ๋ผ ์์ ํด์ผ ๋ฐ๋ฅธ ์ฝ๋์ด๋ค.
class Solution {
public int[] solution(String[] strlist) {
// strlist๊ฐ null์ด๋ฉด ๋น ๋ฐฐ์ด ๋ฐํ
if (strlist == null) {
return new int[0];
}
int[] answer = new int[strlist.length];
for (int i = 0; i < strlist.length; i++) {
answer[i] = strlist[i].length();
}
return answer;
}
}
โ 3. ArrayList๋ก ๋ฆฌํด๋ฐ์ ์ฝ๋
import java.util.*;
class Solution {
public ArrayList solution(String[] strlist) {
ArrayList<Integer> answer = new ArrayList<Integer>();
for(String str : strlist){
answer.add(str.length());
}
return answer;
}
}
ํ๋ณํํด์ ๋ฐํํ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง ์ฒซ๋ฒ์งธ๋ ๋ง์ง๋ง ๋ถ ๋ง์์ ๋์ํ๋ค

๐ฆ 5. TMI
์ฝํ ๋ฌธ์ ๋ ์ฌ๋งํ๋ฉด Stream ์ฐ์ง ๋ง์
Why?
์คํธ๋ฆผ์ ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค.
์คํธ๋ฆผ ์ฐ๋ฉด ์ ๋๋ ์ด์ ๋ ์๋ ๋ธ๋ก๊ทธ ใฑ
Stream, ๋๋๋ก์ด๋ฉด ์ฌ์ฉํ์ง ๋ง์
https://school.programmers.co.kr/learn/courses/30/lessons/12941 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋
eatit.tistory.com
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ Stream์ ์ฌ์ฉํด์ ํ๋ฉด ์๋๋ ๊ฑธ๊น?
์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ์ ์์ง ์๊ธฐ ์ํด ๋ฌธ์ ๋ฅผ ๊พธ์คํ ํ์ด๊ฐ๋ ์ค์ด๋ค. ๊ธฐ์กด์๋ ๋ ๊ฑฐ์ ์๋ฐ๋ฌธ๋ฒ์ ์ด์ฉํด์ ํ์ด๋๋ค๋ฉด, ์์ฆ์ ๋ชจ๋ ์๋ฐ์ ๊ธฐ๋ฅ๋ค์ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๊ณ ์๋ค. ๊ทธ
bperhaps.tistory.com
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ 1. ๋ฌธ์ ์ค๋ช

์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
["We", "are", "the", "world!"]์ ๊ฐ ์์์ ๊ธธ์ด์ธ [2, 3, 3, 6]์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
["I", "Love", "Programmers."]์ ๊ฐ ์์์ ๊ธธ์ด์ธ [1, 4, 12]์ returnํฉ๋๋ค.
๐ก 2. ํ์ด๊ณผ์
โ๏ธ ํด๊ฒฐ๋ฐฉ๋ฒ
๋งค๊ฐ๋ณ์๋ก ๋ฐ์ strlist์ ๊ธธ์ด๋งํผ ๊ฒฐ๊ณผ๊ฐ์ ๋ด์ ๋ฐฐ์ด(lengths)์ ํ๋ ์ ์ธ ํด ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค๊ฐ๋ฉฐstrlist๊ฐ ์์(๋ฌธ์์ด)์ ๊ธธ์ด๋ฅผ ๊ตฌํด์ ๋ฐฐ์ด(lengths)์ ๋ด์ ๋ฆฌํดํ๋ค.
โ๏ธ length()์ length์ ์ฐจ์ด๋ง ์๋ฉด ์ฌ์ด ๋ฌธ์
length
๋๋ฐฐ์ด์์ ์ฌ์ฉ ๋๊ณ , legnth();
๋ ๋ฌธ์์ด์์ ์ฌ์ฉ๋๋ค.
2-1. length
length๋ ๋ฐฐ์ด(array)์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋๋ณ์(ํ๋)์ด๊ณ ๊ดํธ ()๊ฐ ์์ผ๋ฉฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉ๋๋ค.
์ฌ์ฉ๋ฒ: ๋ฐฐ์ด๋ณ์๋ช
.length
int[] numbers = {1, 2, 3, 4, 5}; System.out.println(numbers.length); // ์ถ๋ ฅ: 5
์ ์ฝ๋์์ numbers.length
๋ numbers๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ธ๋ค.
2-2.length()
length()๋ ๋ฌธ์์ด(String)์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ด๋ค. ๊ดํธ ()๊ฐ ์๊ณ , ๋ฌธ์์ด์ ๋ฌธ์ ๊ฐ์๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ค.
์ฌ์ฉ๋ฒ: ๋ฌธ์์ด๋ณ์๋ช
.length()
String text = "Hello"; System.out.println(text.length()); // ์ถ๋ ฅ: 5
์ ์ฝ๋์์ text.length()๋ text๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ฌธ์์ด "Hello"์ ๋ฌธ์ ๊ฐ์(5)๋ฅผ ๋ฐํํ๋ค.
๐จโ๐ป 3. ์ ๋ต์ฝ๋
import java.util.*; class Solution { public int[] solution(String[] strlist) { int[] lengths = new int[strlist.length]; for (int i = 0; i < strlist.length; i++) { lengths[i] = strlist[i].length(); } return lengths; } }
๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
โ 1. ์คํธ๋ฆผ์ผ๋ก ์์ฑํ ์ฝ๋
์คํธ๋ฆผ์ ์ฐ๋ฉด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด ์ง๊ธฐ ๋๋ฌธ์ ์คํธ๋ฆผ์ผ๋ก ์ด ์ฝ๋๋ค์ด ์ข์์๋ฅผ ๋ง์ด ๋ฐ๋ ์ถ์ธ์ด๋ค.
ํ์ง๋ง ์ฝ๋๊ฐ ์งง์์ง๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ์ค์ ๋ก ํ ์คํธ๋ฅผ ๋๋ ค ๋ณด๋ฉด ์คํธ๋ฆผ์ ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๋ค.
์๊ฐ ์ ํ ์๋ ๋ฌธ์ ์์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ถ์ฒํ๋ค.
import java.util.Arrays; class Solution { public int[] solution(String[] strList) { return Arrays.stream(strList).mapToInt(String::length).toArray(); } }
โ 2. ์์ธ์ฒ๋ฆฌ ์ฝ๋
class Solution { public int[] solution(String[] strlist) { int[] answer = {}; answer = new int[strlist.length]; if(strlist != null) { for(int i =0; i<strlist.length; i++){ answer[i] = strlist[i].length(); } } return answer; } }

์ด ์ฌ๋์ ์์ธ์ฒ๋ฆฌ ์๋๋ฅผ ํ ๊ฒ๊น์ง๋ ์ข์์ผ๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ์์น๊ฐ ์ ์ ํ์ง ์๋ค.
ํ์ฌ if (strlist != null) ์ฒดํฌ๊ฐ for ๋ฃจํ๋ฅผ ๊ฐ์ธ๊ณ ์์ง๋ง, ๊ทธ๋ณด๋ค ๋จผ์ answer = new int[strlist.length];๋ฅผ ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์ strlist๊ฐ null์ผ ๊ฒฝ์ฐ, strlist.length๋ฅผ ํธ์ถํ๋ ์๊ฐ NullPointerException์ด ๋ฐ์ํ๋ค.
์ฆ, if (strlist != null) ์กฐ๊ฑด๋ฌธ์ด ์๋ฏธ๊ฐ ์์ด์ง๋ ๊ณณ์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ด๋ค.
โญ ์ฌ๋ฐ๋ฅธ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด null ์ฒดํฌ๋ฅผ ๋จผ์ ํ ํ, answer ๋ฐฐ์ด์ ์ด๊ธฐํํด์ผ ํ๋ค.
์๋์ฒ๋ผ ์์ ํด์ผ ๋ฐ๋ฅธ ์ฝ๋์ด๋ค.
class Solution { public int[] solution(String[] strlist) { // strlist๊ฐ null์ด๋ฉด ๋น ๋ฐฐ์ด ๋ฐํ if (strlist == null) { return new int[0]; } int[] answer = new int[strlist.length]; for (int i = 0; i < strlist.length; i++) { answer[i] = strlist[i].length(); } return answer; } }
โ 3. ArrayList๋ก ๋ฆฌํด๋ฐ์ ์ฝ๋
import java.util.*; class Solution { public ArrayList solution(String[] strlist) { ArrayList<Integer> answer = new ArrayList<Integer>(); for(String str : strlist){ answer.add(str.length()); } return answer; } }
ํ๋ณํํด์ ๋ฐํํ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง ์ฒซ๋ฒ์งธ๋ ๋ง์ง๋ง ๋ถ ๋ง์์ ๋์ํ๋ค

๐ฆ 5. TMI
์ฝํ ๋ฌธ์ ๋ ์ฌ๋งํ๋ฉด Stream ์ฐ์ง ๋ง์
Why?
์คํธ๋ฆผ์ ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค.
์คํธ๋ฆผ ์ฐ๋ฉด ์ ๋๋ ์ด์ ๋ ์๋ ๋ธ๋ก๊ทธ ใฑ
Stream, ๋๋๋ก์ด๋ฉด ์ฌ์ฉํ์ง ๋ง์
https://school.programmers.co.kr/learn/courses/30/lessons/12941 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋
eatit.tistory.com
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ Stream์ ์ฌ์ฉํด์ ํ๋ฉด ์๋๋ ๊ฑธ๊น?
์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ์ ์์ง ์๊ธฐ ์ํด ๋ฌธ์ ๋ฅผ ๊พธ์คํ ํ์ด๊ฐ๋ ์ค์ด๋ค. ๊ธฐ์กด์๋ ๋ ๊ฑฐ์ ์๋ฐ๋ฌธ๋ฒ์ ์ด์ฉํด์ ํ์ด๋๋ค๋ฉด, ์์ฆ์ ๋ชจ๋ ์๋ฐ์ ๊ธฐ๋ฅ๋ค์ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๊ณ ์๋ค. ๊ทธ
bperhaps.tistory.com