Post

[Java] ๋ฐฐ์—ด

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์„ ์–ธํ•˜๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค. ์ด ์—ฌ๋Ÿฌ ์ €์žฅ ๊ณต๊ฐ„์„ ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌถ๋Š” ๊ฒƒ์ด ๋ฐฐ์—ด(array)์ด๋‹ค. C์—์„œ๋„ ๋ดค์ง€๋งŒ, ์ž๋ฐ”์˜ ๋ฐฐ์—ด์€ new๋กœ Heap ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๋ฐฐ์—ด = ์ €์žฅ ๊ณต๊ฐ„์˜ ๋‚˜์—ด

  • ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๋‹ค.
  • ๊ทœ์น™์„ฑ ์—†๋Š” ๊ฐ’์— ๊ทœ์น™์„ฑ(์ธ๋ฑ์Šค)์„ ๋ถ€์—ฌํ•œ๋‹ค.

1. ๋ฐฐ์—ด์˜ ์„ ์–ธ

1
2
3
4
์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช… = {๊ฐ’1, ๊ฐ’2, ๊ฐ’3, ...};   // ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช… = new ์ž๋ฃŒํ˜•[์นธ์ˆ˜];        // ํฌ๊ธฐ๋กœ ์„ ์–ธ
์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช…;
๋ฐฐ์—ด๋ช… = new ์ž๋ฃŒํ˜•[์นธ์ˆ˜];                 // ์„ ์–ธ๊ณผ ํ• ๋‹น ๋ถ„๋ฆฌ

C์™€ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค.

ํ•ญ๋ชฉCJava
๋Œ€๊ด„ํ˜ธ ์œ„์น˜์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[]์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช…
๋ฉ”๋ชจ๋ฆฌ์Šคํƒ ๋“ฑnew๋กœ Heap์— ํ• ๋‹น

๐Ÿ’ก new๋Š” Heap ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ์—ฐ์‚ฐ์ž๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด { }๋งŒ ์“ฐ๋ฉด Heap์— ์•ˆ ๋“ค์–ด๊ฐˆ๊นŒ? ์•„๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ๋Š” new๋ฅผ ์ƒ๋žตํ•œ ๊ฒƒ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฐ”์˜ ๋ฐฐ์—ด์€ ๋ชจ๋‘ Heap์— ๋“ค์–ด๊ฐ€๋Š” ๋™์  ๋ฐฐ์—ด์ด๋‹ค.


2. ๋ฐฐ์—ด์˜ ๊ธธ์ด(length)์™€ ์ถœ๋ ฅ

๋ฐฐ์—ด ์„ ์–ธ ์‹œ ๊ธธ์ด๊ฐ€ length ์ƒ์ˆ˜์— ๋‹ด๊ธด๋‹ค. ๋ฐฐ์—ด๋ช….length๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
int[] arData = {3, 4, 6, 7};

System.out.println(arData);                     // ์ฃผ์†Œ๊ฐ’ (arData[0]์˜ ์ฃผ์†Œ)
System.out.println(arData[0]);                  // 3   (์ฒซ ๋ฒˆ์งธ ๊ฐ’)
System.out.println(arData[arData.length - 1]);  // 7   (๋งˆ์ง€๋ง‰ ์นธ)
System.out.println(arData.length);              // 4   (๊ธธ์ด)

for (int i = 0; i < arData.length; i++) {
    System.out.println(arData[i]);
}

Desktop View

์ฝ”๋“œ๊ฒฐ๊ณผ์˜๋ฏธ
arData์ด์ƒํ•œ ๊ฐ’arData[0]์˜ ์ฃผ์†Œ๊ฐ’
arData[0]3์ฒซ ๋ฒˆ์งธ ๊ฐ’
arData.length - 13(์ธ๋ฑ์Šค)๋งˆ์ง€๋ง‰ ์นธ์„ ๊ฐ€๋ฆฌํ‚ด
arData.length4๋ฐฐ์—ด ๊ธธ์ด

index๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ 

๋ฐฐ์—ด์€ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ , ๋‹ค์Œ ์นธ์œผ๋กœ ๊ฐˆ ๋•Œ๋งˆ๋‹ค ์‹œ์ž‘ ์ฃผ์†Œ์— +1์”ฉ ๋”ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์€ ์‹œ์ž‘์ฃผ์†Œ + 0์ด๊ณ , ์ด 0์ด ๊ทธ๋Œ€๋กœ ์ธ๋ฑ์Šค๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒซ ์นธ์˜ ์ธ๋ฑ์Šค๋Š” 0์ด๋‹ค. (for๋ฌธ์˜ i=0์ด ์—ฌ๊ธฐ์„œ ์œ ๋ž˜ํ•œ๋‹ค.)


3. ๋ฐฐ์—ด์— ๊ฐ’ ์ž…๋ ฅํ•˜๊ธฐ

1
2
3
4
5
6
7
8
int[] arData = new int[5];

for (int i = 0; i < arData.length; i++) {
    arData[i] = 5 - i;      // 5, 4, 3, 2, 1
}
for (int i = 0; i < arData.length; i++) {
    System.out.println(arData[i]);
}

Desktop View


4. ์‹ค์Šต

โ‘  100~1 ๋ˆ„์ ํ•ฉ

1
2
3
4
5
6
7
int[] arData = new int[100];
int sum = 0;
for (int i = 0; i < arData.length; i++) {
    arData[i] = 100 - i;    // 100, 99, ..., 1
    sum += arData[i];       // ๋ˆ„์ 
}
System.out.println(sum);

โ‘ก ์ตœ๋Œ€๊ฐ’ยท์ตœ์†Œ๊ฐ’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int[] arData = new int[5];
Scanner sc = new Scanner(System.in);
int max = 0, min = 0;

for (int i = 0; i < arData.length; i++) {
    System.out.print((i + 1) + "๋ฒˆ์งธ ์ •์ˆ˜ : ");
    arData[i] = sc.nextInt();     // 5๊ฐœ ์ž…๋ ฅ๋ฐ›๊ธฐ
}

max = arData[0];                  // ์ฒซ ๊ฐ’์„ ํ›„๋ณด๋กœ
min = arData[0];
for (int i = 1; i < arData.length; i++) {   // ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ๋น„๊ต
    if (max < arData[i]) max = arData[i];
    if (min > arData[i]) min = arData[i];
}
System.out.println("์ตœ๋Œ€๊ฐ’ : " + max);
System.out.println("์ตœ์†Œ๊ฐ’ : " + min);

๐Ÿ’ก for๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ : ์ฒซ ๋ฒˆ์งธ ๊ฐ’(arData[0])์€ ์ด๋ฏธ max/min์— ๋„ฃ์—ˆ์œผ๋ฏ€๋กœ, ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.

โ‘ข ์ •์ˆ˜๋ฅผ ํ•œ๊ธ€๋กœ ๋ณ€ํ™˜ (์˜ˆ: 1024 โ†’ ์ผ๊ณต์ด์‚ฌ)

1
2
3
4
5
6
7
8
9
10
11
12
13
String hangle = "๊ณต์ผ์ด์‚ผ์‚ฌ์˜ค์œก์น ํŒ”๊ตฌ";
Scanner sc = new Scanner(System.in);
int num = 0;
String result = "";

System.out.print("์ •์ˆ˜ ์ž…๋ ฅ : ");
num = sc.nextInt();

while (num != 0) {
    result = hangle.charAt(num % 10) + result;   // ๋’ค์—์„œ๋ถ€ํ„ฐ ์•ž์œผ๋กœ ๋ถ™์ž„
    num /= 10;
}
System.out.println(result);

Desktop View

๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋œฏ์–ด๋ณด๋ฉด ์ด๋ ‡๋‹ค.

์š”์†Œ์„ค๋ช…
charAt(i)๋ฌธ์ž์—ด์€ ํด๋ž˜์Šค๋ผ [i] ๋Œ€์‹  charAt(i)๋กœ ๋ฌธ์ž ์ ‘๊ทผ
num % 10์ผ์˜ ์ž๋ฆฌ ์ถ”์ถœ (1024 โ†’ 4 โ†’ charAt(4) = โ€œ์‚ฌโ€)
+ result์•ž์— ๋ถ™์—ฌ ์ˆœ์„œ๋ฅผ ๋งž์ถค (์•ˆ ๊ทธ๋Ÿฌ๋ฉด โ€œ์‚ฌ์ด๊ณต์ผโ€)
num /= 10์ž๋ฆฌ ํ•˜๋‚˜ ์ œ๊ฑฐ (1024 โ†’ 102), num์ด 0์ด๋ฉด ์ข…๋ฃŒ

๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
5
6
Java ๋ฐฐ์—ด
โ”œโ”€ ์„ ์–ธ    ์ž๋ฃŒํ˜•[] ์ด๋ฆ„ = {...} ๋˜๋Š” new ์ž๋ฃŒํ˜•[n]
โ”œโ”€ ๋ฉ”๋ชจ๋ฆฌ  new๋กœ Heap์— ํ• ๋‹น (๋™์  ๋ฐฐ์—ด)
โ”œโ”€ length  ๋ฐฐ์—ด๋ช….length (๋งˆ์ง€๋ง‰ ์นธ = length-1)
โ”œโ”€ ์ธ๋ฑ์Šค  0๋ถ€ํ„ฐ ์‹œ์ž‘ (์‹œ์ž‘์ฃผ์†Œ + 0)
โ””โ”€ ํ™œ์šฉ    ๋ˆ„์ ํ•ฉ, ์ตœ๋Œ€/์ตœ์†Œ, charAt๋กœ ๋ฌธ์ž ์ ‘๊ทผ
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
length๋ฐฐ์—ด ๊ธธ์ด๋ฅผ ๋‹ด๋Š” ์ƒ์ˆ˜
newHeap ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜๋Š” ์—ฐ์‚ฐ์ž
charAt(i)๋ฌธ์ž์—ด์˜ i๋ฒˆ์งธ ๋ฌธ์ž์— ์ ‘๊ทผ

๋ฐฐ์—ด์€ ์—ฌ๋Ÿฌ ์ €์žฅ ๊ณต๊ฐ„์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” new๋กœ Heap์— ํ• ๋‹น๋œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ธ๋ฑ์Šค๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ (์‹œ์ž‘ ์ฃผ์†Œ + 0)๋ฅผ ์ดํ•ดํ•˜๋ฉด ์‘์šฉ ๋ฌธ์ œ๋„ ์ฐจ๊ทผ์ฐจ๊ทผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.