๊ด€๋ฆฌ ๋ฉ”๋‰ด

0105

39. Java/Javascript ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(lv.0) ์ง์ˆ˜๋Š” ์‹ซ์–ด์š” ๋ณธ๋ฌธ

๐Ÿง‘‍๐Ÿ’ป programmers

39. Java/Javascript ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(lv.0) ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”

๊ณต๋ฐฑ์˜ค 2025. 3. 11. 22:04
728x90
๋ฐ˜์‘ํ˜•

โœ… ๋ฌธ์ œ

์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

โœ… java

import java.util.ArrayList;

public class Solution {
    public static int[] solution(int n) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 1; i <= n; i += 2) { // 1๋ถ€ํ„ฐ 2์”ฉ ์ฆ๊ฐ€ (ํ™€์ˆ˜๋งŒ ์„ ํƒ)
            list.add(i);
        }

        // ArrayList๋ฅผ int[] ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
        return list.stream().mapToInt(Integer::intValue).toArray();
    }

    public static void main(String[] args) {
        int[] result = solution(10);
        for (int num : result) {
            System.out.print(num + " "); // 1 3 5 7 9
        }
    }
}

๐Ÿ“Œ Arraylist<Integer>์ธ ์ด์œ ?

  • java์—์„œ ArrayList๋Š” ๊ฐ์ฒด(Object) ํƒ€์ž…๋งŒ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธํ˜•(primitive type) int๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋Œ€์‹  int์˜ ๋ž˜ํผํด๋ž˜์Šค(wrapper class)์ธ Integer์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

๐Ÿ“Œ int์™€ Integer์˜ ์ฐจ์ด

type ์„ค๋ช… ๋ฉ”๋ชจ๋ฆฌ
int ๊ธฐ๋ณธํ˜• (primitive type), 4๋ฐ”์ดํŠธ ์Šคํƒ(Stack)
Integer int์˜ ๋ž˜ํผ ํด๋ž˜์Šค (๊ฐ์ฒด) ํž™(Heap)

โœ” int๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์œผ๋กœ, ๊ฐ์ฒด๊ฐ€ ์•„๋‹˜
โœ” Integer๋Š” ๊ฐ์ฒด(Reference type)๋กœ, ArrayList์— ์ €์žฅ ๊ฐ€๋Šฅ

โœ” java๊ฐ€ Auto-boxing & Unboxing ์„ ์ง€์›ํ•˜๋ฏ€๋กœ int์ฒ˜๋Ÿผ ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

๐Ÿ”น 1. ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ๋ž€?

  • ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ค‘ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„
    • LIFO(Last in First out) ๊ตฌ์กฐ
      • ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์ œ๊ฑฐ๋œ๋‹ค
    • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ๋˜๊ณ  ์ข…๋ฃŒ์‹œ ์ž๋™ ํ•ด์ œ๋œ๋‹ค
    • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜(int, char, double,,,)์™€ ๋ฉ”์„œ๋“œ์˜ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น/ํ•ด์ œ๊ฐ€ ๋น ๋ฅด๋‹ค.

๐Ÿ”น 2. ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ๋ž€?

  • ๊ฐ์ฒด(ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
    • ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋™์  ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค -> ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์—๋„ ์ƒ์„ฑ๋œ๋‹ค.
    • ๊ฐ์ฒด๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜(Reference)๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ
    • new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
    • Garbage Collector๊ฐ€ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค.

 

  • ๊ธฐ๋ณธํ˜•(Primitive Type) -> ๊ฐ’์„ ์ง์ ‘ ์ €์žฅ
  • ์ฐธ์กฐํ˜•(Reference Type) -> ํž™์— ๊ฐ์ฒด ์ €์žฅ + ์Šคํƒ์— ์ฃผ์†Œ๊ฐ’ ์ €์žฅ
  • ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋ฉด ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌ์ผœ ๊ฐ’์ด ๊ณต์œ ๋œ๋‹ค
  • ๊นŠ์€ ๋ณต์‚ฌ(์ƒˆ ๊ฐ์ฒด ์ƒ์„ฑ)์„ ํ•˜๋ฉด ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ ArrayList๋ฅผ solution์˜ ๋ฆฌํ„ด๊ฐ’์ธ int[]๋กœ ๋ณ€ํ™˜

  • list.stream()
    • ArrayList๋ฅผ Stream API๋กœ ๋ณ€ํ™˜ -> ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ
    • .mapToInt(Integer::intValue)
      • Integer๊ฐ์ฒด๋ฅผ ๊ธฐ๋ณธํ˜• int๋กœ ๋ณ€ํ™˜(์ž๋™ ์–ธ๋ฐ•์‹ฑ)
      • Integer::intValue(๋ฉ”์„œ๋“œ ์ฐธ์กฐ๋ฐฉ์‹)  == x -> x.intValue(๋žŒ๋‹ค ํ‘œํ˜„์‹ ๋ฐฉ์‹)
    • .toArray()
      • ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

 

โœ… javascript


function solution(n) {
    let answer = [];

    for (let i = 1; i<=n; i+=2) {
        answer.push(i)
    }

    return answer;
}

 

728x90