Problem ๐Ÿ’ป

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

๋ฌธ์ž์—ด ๋ฐฐ์—ด strlist๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. strlist ๊ฐ ์›์†Œ์˜ ๊ธธ์ด๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ strlist ์›์†Œ์˜ ๊ธธ์ด ≤ 100
  • strlist๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ํŠน์ˆ˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

strlistresult

["We", "are", "the", "world!"] [2, 3, 3, 6]
["I", "Love", "Programmers."] [1, 4, 12]




Approach 1 โŒ - ๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ๋ฒ•

class Solution {
    public int[] solution(String[] strlist) {
     int n = strlist.length;
     int[] answer; 
        for(int i = 0; i < n; i++) {
            int count[i] = strlist[i].length;
        }
        for (int l :   )
        
    }
}
<๋‚˜์˜ ๋ฏธ์ˆ™ํ•œ ์ƒ๊ฐ์˜ ํ๋ฆ„ ๊ณผ์ •>
0. ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค.
1. ๋ฌธ์ž์—ด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์˜ ๊ธธ์ด๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด length ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
2. ๊ฐ ์š”์†Œ์˜ ๊ธธ์ด๋ฅผ ์ธก์ •ํ•˜๋ ค๋ฉด for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
3. for ๋ฌธ ์•ˆ์—์„œ ์ธก์ •๋œ ๊ธธ์ด๋ฅผ int[] answer ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.
4. ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 


Approach 2 โญ• - ๋‚˜์˜ ์ ‘๊ทผ๋ฒ• ๊ต์ •

์ฝ”๋“œ ๋ถ„์„ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„

1. ๋ณ€์ˆ˜ ์„ ์–ธ

int n = strlist.length; ๋Š” ์ž˜ํ–ˆ๋‹ค. strlist ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ n์— ์ €์žฅํ–ˆ๋‹ค. 

๊ทธ๋Ÿฌ๋‚˜ int[] answer;๋Š” ํฌ๊ธฐ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•˜๋‹ค. ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

int[] answer = new int[n]; //n๋งŒํผ์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด ์ƒ์„ฑ

 

2. ๊ฐ ์š”์†Œ์˜ ๊ธธ์ด ๊ณ„์‚ฐ

int count[i] = strlist[i].length;๋Š” ๋ฌธ๋ฒ•์ ์œผ๋กœ ํ‹€๋ ธ๋‹ค.

count๋ผ๋Š” ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ์„ ์–ธํ•˜๋ ค๊ณ  ํ•œ ๊ฑด๋ฐ, ์ด๋ฏธ ๋ฐฐ์—ด์„ answer๋กœ ์„ ์–ธํ–ˆ์œผ๋‹ˆ ์ด๊ฑธ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋ฐฐ์—ด answer์˜ i๋ฒˆ์งธ ์œ„์น˜์— ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•˜๋‹ˆ๊น ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

answer[i] = strlist[i].length();

 

3. ์ถœ๋ ฅ

ํ˜„์žฌ for (int l :    ) ๋ถ€๋ถ„์ด ๋ฏธ์™„์„ฑ์ด๋‹ค. for-each ๋ฌธ๋ฒ•์€ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— return answer;๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค.

 

return answer;

Solution ๐Ÿ’ก

<์ •๋‹ต ์ฝ”๋“œ>

public class Length {
    public int[] solution(String[] strlist) { // strlist๋Š” String ๋ฐฐ์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        int n = strlist.length; // ๋ฐฐ์—ด์˜ ๊ธธ์ด ๊ฐ€์ ธ์˜ค๊ธฐ
        int[] answer = new int[n]; // ๊ฒฐ๊ณผ ๋ฐฐ์—ด ์ƒ์„ฑ

        for (int i = 0; i < n; i++) { 
            answer[i] = strlist[i].length(); // ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ์ €์žฅ
        }

        return answer; // ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    }

    // ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ฝ”๋“œ
    public static void main(String[] args) {
        Length length = new Length(); // ๊ฐ์ฒด ์ƒ์„ฑ
        String[] strlist = {"hello", "world", "java", "coding"}; // ํ…Œ์ŠคํŠธ์šฉ ๋ฌธ์ž์—ด ๋ฐฐ์—ด
        int[] result = length.solution(strlist); // solution ํ•จ์ˆ˜ ํ˜ธ์ถœ

        // ๊ฒฐ๊ณผ ์ถœ๋ ฅ
        for (int len : result) {
            System.out.print(len + " ");
        }
    }
}

 

์ถœ๋ ฅ์ฝ”๋“œ์—์„œ์˜ Length length = new Length();์˜ ์˜๋ฏธ :

1. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„์ด๊ณ ,

๊ฐ์ฒด(object)๋Š” ๊ทธ ์„ค๊ณ„๋„๋กœ ๋งŒ๋“  ์‹ค์ œ ์ธ์Šคํ„ด์Šค์ด๋‹ค.

public class Length {
//ํด๋ž˜์Šค ์„ ์–ธ
}

์—ฌ๊ธฐ์„œ Length๋ผ๋Š” ํด๋ž˜์Šค๋Š” ์„ค๊ณ„๋„ ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

2. new Length()์˜ ์˜๋ฏธ

new Length()๋Š” Length ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

 - new ๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ.

 -  Length()๋Š” ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž(Constructor)๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ ์‹คํ–‰๋˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

 - new Length()๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— Length ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

3. Length length = new Length();์˜ ์—ญํ• 

 3.1 ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ : new Length()๋ฅผ ํ†ตํ•ด Length ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•œ๋‹ค.

 3.2 ๋ณ€์ˆ˜์— ๊ฐ์ฒด ์ฐธ์กฐ : Length length๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ, ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

์ฆ‰, length๋Š” Lengthํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” Length ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. ์™œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋‚˜?


ํด๋ž˜์Šค์— ์ •์˜๋œ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

(Static ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.)
์˜ˆ๋ฅผ ๋“ค์–ด, solution ๋ฉ”์„œ๋“œ๋Š” Length ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— Lengthํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

public class Length {
    public int[] solution(String[] strlist) {
        // ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
        return new int[0];
    }
    public static void main(String[] args) {
        Length length = new Length(); //๊ฐ์ฒด ์ƒ์„ฑ
        int[] result = length.solution(new String[] {"hello", "world"}); //๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
    }
}

๋งŒ์•ฝ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  solution ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค ํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ž€?

2024.12.06 - [Java/Breaking down Java code] - [Java] static์˜ ์œ ๋ฌด (์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ & ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ)

 

[Java] static์˜ ์œ ๋ฌด (์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ & ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ)

1. ํด๋ž˜์Šค๋ž€?ํด๋ž˜์Šค๋Š” ์„ค๊ณ„๋„์ด๋‹ค.์„ค๊ณ„๋„๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌผ๊ฑด(๊ฐ์ฒด)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ์ž๋™์ฐจ ์„ค๊ณ„๋„(Car)๋ฅผ ๋งŒ๋“ค๋ฉด, ์ด ์„ค๊ณ„๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋นจ๊ฐ„์ƒ‰ ์ž๋™์ฐจ์™€ ํŒŒ๋ž€์ƒ‰ ์ž๋™์ฐจ๋ผ๋Š” ๋‘ ๋Œ€์˜ ์ž

yeonbikim.tistory.com

 

์ƒ์„ฑ์ž๋ž€? 
๋งํฌ ์ฐธ๊ณ .

 

+ Recent posts