Problem ๐Ÿ’ป

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

๋ฌธ์ž์—ด s์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ˆซ์ž๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

str์— ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž ์ค‘ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„ ์ด๋ฅผ "(์ตœ์†Œ๊ฐ’) (์ตœ๋Œ€๊ฐ’)"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.
์˜ˆ๋ฅผ๋“ค์–ด s๊ฐ€ "1 2 3 4"๋ผ๋ฉด "1 4"๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , "-1 -2 -3 -4"๋ผ๋ฉด "-4 -1"์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ œํ•œ ์กฐ๊ฑด

  • s์—๋Š” ๋‘˜ ์ด์ƒ์˜ ์ •์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"




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

์ผ๋‹จ ์ด ๋ฌธ์ œ์—์„œ๋Š” ๊ณต๋ฐฑ์ด ๋ฌธ์ž๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ ,์™€ ๊ฐ™์€ ์—ญํ• ๋กœ ์–ด๋–ป๊ฒŒ ์ธ์‹ํ•˜๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๊ณ 

๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค ์ค‘ ์–ด๋–ป๊ฒŒ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๊ณจ๋ผ๋‚ด๋Š” ๋ฌธ๋ฒ•๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.


Approach 2 โญ• - ๋‚˜์˜ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•œ ๊ต์ •

์ด ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ˆซ์ž๋ฅผ ๋ถ„๋ฆฌํ•œ ๋’ค, ๊ฐ ์ˆซ์ž๋ฅผ ๋น„์š”ํ•˜์—ฌ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ๋ฌธ์ œ.

 


Solution ๐Ÿ’ก

1. ๋ฌธ์ž์—ด ๋ถ„๋ฆฌ:

   - ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด s๋ฅผ ๊ณต๋ฐฑ(" ")์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” split()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

   - ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ ์ˆซ์ž๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ €์žฅ๋œ๋‹ค. 

2. ์ตœ์†Œ๊ฐ’ ๋ฐ ์ตœ๋Œ€๊ฐ’ ์ดˆ๊ธฐํ™” :

    - ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ตœ์†Œ๊ฐ’(min) ๋ฐ ์ตœ๋Œ€๊ฐ’(max)์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

    - ๋ฌธ์ž์—ด๋กœ ์ €์žฅ๋œ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” Integer.parseInt()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3. ๋ฐฐ์—ด ์ˆœํšŒํ•˜๋ฉฐ ์ตœ์†Œ๊ฐ’ ๋ฐ ์ตœ๋Œ€๊ฐ’ ์—…๋ฐ์ดํŠธ :

    - ๊ฐ ์ˆซ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ˜„์žฌ ์ตœ์†Œ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ตœ์†Œ๊ฐ’์„ ์—…๋ฐ์ดํŠธ, ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์ตœ๋Œ€๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 

4. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ :

     - ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ๊ฒฐํ•ฉํ•  ๋•Œ +์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

import java.util.*;

class Solution {
   public String solution(String s) {
       // ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ
       String[] numbers = s.split(" ");
       
       // ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’ ์ดˆ๊ธฐํ™”
       int min = Integer.parseInt(numbers[0]);
       int max = Integer.parseInt(numbers[0]);
       
       // ๋ฐฐ์—ด ์ˆœํšŒํ•˜๋ฉฐ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ.
       for (String num : numbers) {
           int current = Integer.parseInt(num);
           if (current < min) {
               min = current;
           }
           if (current > max) {
               max = current;
           }
       }
       
       // ๊ฒฐ๊ณผ๋ฅผ "(์ตœ์†Œ๊ฐ’) (์ตœ๋Œ€๊ฐ’)" ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
       return min + " " + max;
   
   }
}

 


Reference ๐Ÿ“„ - ์Šคํ„ฐ๋””์—์„œ ์ฐพ์€ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค

 

 

package programmers.maxAndMin;

import java.util.Arrays;

public class Solution {
    // Arrays.sort() ์—†์ด ๊ตฌํ˜„, ์ •์„
    public String solution(String s) {
        String answer = "";
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
        int num;

        String[] strArr = s.split(" ");

        //  O(n)
        for (int i = 0; i < strArr.length; i++) {
            num = Integer.parseInt(strArr[i]);
            if (num < min) min = num;
            if (num > max) max = num;
        }

        answer = min + " " + max;

        return answer;
    }

    // ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ, Arrays.sort() ์‚ฌ์šฉ
    public String solution2(String s) {
        String answer = "";
        int min, max;

        String[] strArr = s.split(" ");

        int[] numArr = new int[strArr.length];
        for (int i = 0; i < strArr.length; i++) {
            numArr[i] = Integer.parseInt(strArr[i]);
        }

        Arrays.sort(numArr);

        min = numArr[0];
        max = numArr[numArr.length - 1];

        answer = min + " " + max;

        return answer;
    }

    // ์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ
    public String solution3(String s) {
        String answer = "";

        String[] strArr = s.split(" ");
        // ์ •์„ ์ŠคํŠธ๋ฆผ
        int[] numArr = Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray();
        Arrays.sort(numArr);

        // ์ง€๋ž„ ๋ฒ„์ „
        int[] sortedNumArr = Arrays.stream(Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray()).sorted().toArray();

        answer = numArr[0] + " " + numArr[numArr.length - 1];

        return answer;
    }


    public static void main(String[] args) {
        String ex1 = "1 2 3 4";
        String ex2 = "-1 -2 -3 -4";
        String ex3 = "-1 -1";

        Solution solutionClass = new Solution();

        System.out.println(solutionClass.solution(ex1));
        System.out.println(solutionClass.solution(ex2));
        System.out.println(solutionClass.solution(ex3));

        System.out.println(solutionClass.solution2(ex1));
        System.out.println(solutionClass.solution2(ex2));
        System.out.println(solutionClass.solution2(ex3));

        System.out.println(solutionClass.solution3(ex1));
        System.out.println(solutionClass.solution3(ex2));
        System.out.println(solutionClass.solution3(ex3));
    }
}

 


- 1 - ์ผ๋‹จ ์ฒซ๋ฒˆ์งธ Solution๋ฉ”์„œ๋“œ (์ •์„์  ๋ฐฉ๋ฒ•) ๋ถ„์„ํ•ด๋ณผ๊นŒ?

package programmers.maxAndMin;

import java.util.Arrays;

public class Solution {
    // Arrays.sort() ์—†์ด ๊ตฌํ˜„, ์ •์„
    public String solution(String s) {
        String answer = "";
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
        int num;

        String[] strArr = s.split(" ");

        //  O(n)
        for (int i = 0; i < strArr.length; i++) {
            num = Integer.parseInt(strArr[i]);
            if (num < min) min = num;
            if (num > max) max = num;
        }

        answer = min + " " + max;

        return answer;
    }

1.1 ์ด ์ฝ”๋“œ์˜ ํ•ต์‹ฌ ๋…ผ๋ฆฌ

   1) ๋ฌธ์ž์—ด s๋ฅผ ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ˆซ์ž ๋ฐฐ์—ด(strArr)๋กœ ๋ณ€ํ™˜.

       (๋‚˜๋Š” ์ฒ˜์Œ์— ์ด ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ–ˆ์„๋•Œ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฐฐ์—ด์„ ๊ตฌ๋ถ„์กฐ์ฐจ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ€ํ™˜์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ๋„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. )

   2) ์ˆซ์ž ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด์„œ ์ตœ์†Œ๊ฐ’(mim)๊ณผ ์ตœ๋Œ€๊ฐ’(max)์„ ๊ณ„์‚ฐ.

   3) ๊ณ„์‚ฐ๋œ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์กฐํ•ฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜. 

        (์ด ๋ฌธ์ œ์˜ ํฌ์ธํŠธ๋Š” ๋ฌธ์ž์—ด => ์ˆซ์ž๋ฐฐ์—ด , ์ •์ˆ˜ ๋ณ€ํ™˜, ์ตœ์†Œ๊ฐ’ ์ตœ๋Œ€๊ฐ’ ์ฐพ๋Š” ๋ฒ• )

 

 1.2 ๊ตฌํ˜„ ํ๋ฆ„

  1.2.0 ๋ฌธ์ž์—ด ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”

String answer = "";

  " ": ๋นˆ ๋ฌธ์ž์—ด. ์•„๋ฌด ๋‚ด์šฉ์ด ์—†๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.

 ์ดˆ๊ธฐํ™”๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ์ค€๋น„ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

 ๋นˆ ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” 

   1. ๊ฐ’ ๋ˆ„๋ฝ ๋ฐฉ์ง€ : ์ž๋ฐ”์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ๊ฐ’(" ")์„ ํ• ๋‹นํ•˜์—ฌ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ๋‹ค.

   2. ๋‚˜์ค‘์— ๊ฐ’ ์„ค์ • : answer๋Š” ์ดํ›„ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ํฌํ•จํ•œ ๋ฌธ์ž์—ด๋กœ ์„ค์ •๋  ์˜ˆ์ •์ด๋‹ค. ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด๋‘๋ฉด ์ถ”ํ›„ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ๋‹ค.  

  1.2.1 ๋น„๊ต ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ์„ ์–ธ๋ฌธ

int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;

 

Integer.MAX_VALUE: ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜.

Integer.MIN_VALUE: ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜.

์ดˆ๊นƒ๊ฐ’์„ ์ด๋“ค๋กœ ์„ค์ •ํ•˜์—ฌ ๋น„๊ต ์—ฐ์‚ฐ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•จ.

 

์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜์™€ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฒ•์ด๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์ ์ธ ํ•„์š”์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

     

     1.2.1-1 ์ตœ์†Œ๊ฐ’/ ์ตœ๋Œ€๊ฐ‘ ๊ณ„์‚ฐ์˜ ๊ธฐ๋ณธ ๋…ผ๋ฆฌ

์ตœ์†Œ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด :

 - ์ดˆ๊ธฐ๊ฐ’(min)์€ ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

 - ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋งค๋ฒˆ ๋น„๊ตํ•˜๋ฉด์„œ ๋” ์ž‘์€ ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ์ด๋ฅผ min์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

์ตœ๋Œ€๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด :

  - ์ดˆ๊ธฐ๊ฐ’(max)์€ ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

  - ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋งค๋ฒˆ ๋น„๊ตํ•˜๋ฉด์„œ ๋” ํฐ ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ์ด๋ฅผ max์— ์ €์žฅ

 

 

์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ์ˆซ์ž๋ฅผ ์„ค๋ช…ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 
๋งŒ์•ฝ์— int min = 0;์œผ๋กœ ํ•œ๋‹ค๋ฉด
๋ฐฐ์—ด์ด {1,2,3}์ธ ๊ฒฝ์šฐ
์ฒซ ๋ฒˆ์งธ ์ˆซ์ž 1๊ณผ ๋น„๊ต: 1 < 0์€ false, min์€ ์—ฌ์ „ํžˆ 0.
๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž˜๋ชป๋œ ๊ฐ’ 0์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 


   1.2.2 strArr์ด๋ผ๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , split๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ.

String[] strArr = s.split(" ");

- split ๋ฉ”์„œ๋“œ : ์ž๋ฐ”์˜ Stringํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋กœ, ํŠน์ • ๊ตฌ๋ถ„์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด(String[])๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ split(" ")๋Š” ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆˆ๋‹ค.

- s.์˜ ์˜๋ฏธ

s๋Š” solutionํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๋ฌธ์ž์—ด ๊ฐ์ฒด์ด๋‹ค. ๋ฌธ์ž์—ด ๊ฐ์ฒด s์˜ ๋‚ด์šฉ์„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

๊ฐ์ฒด s๊ฐ€ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” Stringํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ธ split์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์ž‡๋Š” ๊ฒƒ์ด๋‹ค. 

์ด๋•Œ, s.๋Š” ๋ฌธ์ž์—ด s์— ๋Œ€ํ•ด split ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.


   

    1.2.3 strArr ๋ฌธ์ž์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ •์ˆ˜๋กœ ๋ฐ”๊ฟ”์„œ min๊ณผ max๊ฐ’ ๋„ฃ๊ธฐ.

for (int i = 0; i < strArr.length; i++) {
    num = Integer.parseInt(strArr[i]);
    if (num < min) min = num;
    if (num > max) max = num; 
}

    1.2.3-1 Integer.parseInt() ๋ฉ”์„œ๋“œ 

Integer.parseInt(String s)๋Š” ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” Integerํด๋ž˜์Šค์˜ ์ •์ (static)๋ฉ”์„œ๋“œ์ด๋‹ค.

์—ญํ•  : ๋ฌธ์ž์—ด(String)์„ ์ •์ˆ˜ํ˜•(int)์œผ๋กœ ๋ณ€ํ™˜.

 

     1.2.3-2 strArr[i]์˜ ์—ญํ• 

 strArr์€ String๋ฐฐ์—ด๋กœ, split(" ")๋ฉ”์„œ๋“œ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์ด๋‹ค. 

 strArr[i]๋Š” ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

      1.2.3-3 Integer.parseInt(strArr[i])์˜ ์ „์ฒด ๋™์ž‘

strArr[i]: ๋ฐฐ์—ด์—์„œ i๋ฒˆ์งธ ๋ฌธ์ž์—ด ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ด.

Integer.parseInt(): ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜.

๊ฒฐ๊ณผ: ๋ฌธ์ž์—ด์ด ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์–ด ๋ณ€์ˆ˜ num์— ์ €์žฅ

for ๋ฐ˜๋ณต๋ฌธ์—์„œ strArr[i]์˜ ๊ฐ’์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณ€์ˆ˜ num์— ์ €์žฅ.

 

 

- ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ฐ ์ˆซ์ž๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ min๊ณผ max๋ฅผ ๊ฐฑ์‹ .

์™œ max๋„ num์œผ๋กœ ์„ค์ •ํ•˜๊ณ  min๋„ num์œผ๋กœ ์„ค์ •ํ•˜์˜€๋Š”๊ฐ€?
์ด ๋ถ€๋ถ„์€ ๋ณ€์ˆ˜์˜ ์—ญํ• ๊ณผ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ด๋‹ค.
1. ๋ณ€์ˆ˜๋“ค์˜ ์—ญํ• 
  1) num :
     - num์€ ํ˜„์žฌ ๋ฐ˜๋ณต ์ค‘์— ์ฒ˜๋ฆฌ๋˜๋Š” ํ•˜๋‚˜์˜ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” '์ž„์‹œ ๋ณ€์ˆ˜'์ด๋‹ค.
     - ๋ฐ˜๋ณต๋ฌธ์ด ํ•œ ๋ฒˆ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค strArr[i]์˜ ๊ฐ’์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ num์— ์ €์žฅํ•œ๋‹ค.
     - ์ด ๋ณ€์ˆ˜๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ˆซ์ž๋งŒ ๋‹ด๋Š”๋‹ค.
  2) min๊ณผ max :
      - min์€ ํ˜„์žฌ๊นŒ์ง€ ๋ฐœ๊ฒฌ๋œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ €์žฅ.
      - max๋Š” ํ˜„์žฌ๊นŒ์ง€ ๋ฐœ๊ฒฌ๋œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ €์žฅ.
      - ๋ฐ˜๋ณต์ด ์ง„ํ–‰๋˜๋ฉด์„œ min๊ณผ max๋Š” ๊ณ„์† ์—…๋ฐ์ดํŠธ ๋˜์ง€๋งŒ, num์€ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ฎ์–ด์”Œ์›Œ์ง„๋‹ค.

์™œ min๊ณผ max๋Š” ๋ชจ๋‘ num์„ ์ฐธ์กฐํ•˜๋Š”๊ฐ€?
์ฝ”๋“œ์—์„œ min๊ณผ max๋Š” num์„ ์‚ฌ์šฉํ•ด ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.
1) ๋ฐ˜๋ณต๋ฌธ์ด ์‹œ์ž‘๋˜๋ฉด, ํ˜„์žฌ ์ˆซ์ž๋ฅผ num์— ์ €์žฅ.
2) ์กฐ๊ฑด๋ฌธ์—์„œ :
   - num์ด min๋ณด๋‹ค ์ž‘์œผ๋ฉด : min = num;์œผ๋กœ ์ตœ์†Œ๊ฐ’ ๊ฐฑ์‹ 
   - num์ด max๋ณด๋‹ค ํฌ๋ฉด: max = num;์œผ๋กœ ์ตœ๋Œ€๊ฐ’ ๊ฐฑ์‹ .
3) ๋‹ค์Œ ๋ฐ˜๋ณต์—์„œ num์€ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ฐ”๋€Œ๊ณ , min๊ณผ max๋Š” ๊ฐฑ์‹ ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

๋ณ€์ˆ˜๊ฐ„ ํ˜ผ๋™์ด ์—†๋Š” ์ด์œ ?
min๊ณผ max๋Š” ๋ฐ˜๋ณต๋ฌธ์ด ์ง„ํ–‰๋ ์ˆ˜๋ก ์ถ•์ ๋œ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , num์€ ์ˆœ๊ฐ„์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฐ’๋งŒ ์ €์žฅํ•œ๋‹ค.
• num:
   ์ˆ˜๋ช…: ๋ฐ˜๋ณต๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต ๋™์•ˆ.
   ์—ญํ• : ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๊ฐ’.
• min๊ณผ max:
   ์ˆ˜๋ช…: ๋ฐ˜๋ณต๋ฌธ ์ „์ฒด ๋™์•ˆ ์œ ์ง€.
   ์—ญํ• : ์ „์ฒด ๋ฐฐ์—ด์„ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ํ˜„์žฌ๊นŒ์ง€์˜ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ €์žฅ. 

1.2.4 ๋ฌธ์ž์—ด์— min๊ณผ max๊ฐ’ ๋„ฃ๊ธฐ

answer = min + " " + max

min๊ณผ max๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฌธ์ž์—ด ์ƒ์„ฑ.

 

์‹œ๊ฐ„ ๋ณต์žก๋„

 

split: O(n) (n์€ ๋ฌธ์ž์—ด ๊ธธ์ด)

๋ฐ˜๋ณต๋ฌธ: O(n) (n์€ ๋ฐฐ์—ด ๊ธธ์ด)

์ดํ•ฉ: O(n)

 


- 2 - solution2 ๋ฉ”์„œ๋“œ (์ •๋ ฌ ์‚ฌ์šฉ) 

package programmers.max;

import java.util.Arrays;
import java.util.Random;

public String solution2(String s) {
        String answer = "";
        int min, max;

        String[] strArr = s.split(" ");

        int[] numArr = new int[strArr.length];
        for (int i = 0; i < strArr.length; i++) {
            numArr[i] = Integer.parseInt(strArr[i]);
        }

        Arrays.sort(numArr);

        min = numArr[0];
        max = numArr[numArr.length - 1];

        answer = min + " " + max;

        return answer;
    }

 

2.1 ์ด ๋ฐฉ๋ฒ•์˜ ํ•ต์‹ฌ ๋…ผ๋ฆฌ:

1. ๋ฌธ์ž์—ด s๋ฅผ ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜.

2. ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ •๋ ฌ.

3. ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’(์ตœ์†Œ๊ฐ’)๊ณผ ๋งˆ์ง€๋ง‰ ๊ฐ’(์ตœ๋Œ€๊ฐ’)์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜.

 

 2.2 ๊ตฌํ˜„ ํ๋ฆ„

int [] numArr = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
    numArr[i] = Integer.parseInt(strArr[i]);
}
Arrays.sort(numArr);

- Arrays.sort : ์ •์ˆ˜ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ.

min = numArr[0];
max = numArr[numArr.length - 1];

 - ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์€ ์ตœ์†Œ๊ฐ’, ๋งˆ์ง€๋ง‰ ๊ฐ’์€ ์ตœ๋Œ€๊ฐ’.

 

์‹œ๊ฐ„ ๋ณต์žก๋„

 

split: O(n)

for ๋ฐ˜๋ณต๋ฌธ: O(n)

Arrays.sort: O(n log n)

์ดํ•ฉ: O(n log n)


 

- 3- solution3 ๋ฉ”์„œ๋“œ (์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ)

public String solution3(String s) {
        String answer = "";

        String[] strArr = s.split(" ");
        // ์ •์„ ์ŠคํŠธ๋ฆผ
        int[] numArr = Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray();
        Arrays.sort(numArr);

        // ์ง€๋ž„ ๋ฒ„์ „
        int[] sortedNumArr = Arrays.stream(Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray()).sorted().toArray();

        answer = numArr[0] + " " + numArr[numArr.length - 1];

        return answer;
    }

3.1 ํ•ต์‹ฌ ๋…ผ๋ฆฌ

 1) ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ Stream์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ด๋ฅผ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ๋งคํ•‘.

 2) ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด์„ ์ •๋ ฌ.

 3) ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’(์ตœ์†Œ๊ฐ’)๊ณผ ๋งˆ์ง€๋ง‰ ๊ฐ’(์ตœ๋Œ€๊ฐ’)์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

int[] numArr = Arrays.stream(strArr)
                     .mapToInt(Integer::parseInt)
                     .toArray();
Arrays.sort(numArr);

์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ์—....

 3.2 ๊ตฌํ˜„ ํ๋ฆ„

int[] numArr = Arrays.stream(strArr)
                     .mapToInt(Integer::parseInt)
                     .toArray();
Arrays.sort(numArr);

 - Arrays.stream : ๋ฐฐ์—ด์„ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜.

 - mapToInt : ์ŠคํŠธ๋ฆผ์˜ ๊ฐ ์š”์†Œ๋ฅผ Integer.parseInt๋กœ ๋ณ€ํ™˜.

 - toArray : ์ŠคํŠธ๋ฆผ์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜.

 

int[] sortedNumArr = Arrays.stream(Arrays.stream(strArr))
                                         .mapToInt(Integer::parseInt)
                                         .toArray())
                           .sorted()
                           .toArray();

 - ์ŠคํŠธ๋ฆผ์˜ sorted๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ฐ˜ํ™˜.

 

์‹œ๊ฐ„ ๋ณต์žก๋„

 

split: O(n)

์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ๋ฐ ์ •๋ ฌ: O(n log n)

์ดํ•ฉ: O(n log n)

 

 

 

 

+ Recent posts