๐Ÿ’ป Programming/JAVA

[JAVA] 1. ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ

najiwon 2023. 8. 2. 00:03

 

๋”๋ณด๊ธฐ

๊ธฐ์ดˆ๋ฅผ ์œ„ํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž๋ฐ” ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค. 

<๊ฐ€์žฅ ๋นจ๋ฆฌ ๋งŒ๋‚˜๋Š” ์ฝ”์–ด์ž๋ฐ” 9 - ์นด์ด ํ˜ธ์ŠคํŠธ๋งŒ> ์ฑ…์œผ๋กœ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•˜๋Š” ๊ธ€

 

์‹ค์Šต ํ™˜๊ฒฝ

macOS

JDK 19.0.2

InteIliJ 2022.3.2

 


1. ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ๊ทธ๋žจ

1.1. "Hello, World" 

package java_study;

public class HelloWorld {
    public static void main(String[] args) { // main ๋ฉ”์„œ๋“œ
        System.out.println("Hello world!");
    }
}

์ž๋ฐ” - ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด

ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ์ฒด(Object)๋ฅผ ์กฐ์ž‘ํ•ด์„œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•จ

๊ฐ ๊ฐ์ฒด๋Š” ํŠน์ • ํด๋ž˜์Šค(Class)์— ์†ํ•˜๋ฉฐ, ๊ทธ ๊ฐ์ฒด๋ฅผ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(instance)๋ผ๊ณ  ํ•จ

 

ํด๋ž˜์Šค์—๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ์™€ ๋™์ž‘์„ ์ •์˜

 

main ๋ฉ”์„œ๋“œ - ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ

static์ด ๋ถ™์–ด์„œ ๊ฐ์ฒด๊ฐ€ ์—†์–ด๋„ ์ž‘๋™ํ•œ๋‹ค. 

 

ํŒจํ‚ค์ง€(package) - ๊ด€๋ จ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ชจ์•„ ๋†“์€ ์ง‘ํ•ฉ

ํ•œ ํŒจํ‚ค์ง€์— ๊ด€๋ จ ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์„ ํ•จ๊ป˜ ๋ฌถ์–ด ์„œ๋กœ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌ ํ•˜๋ฉด ์ข‹์Œ

 

 

 ์ž๋ฐ”๋Š” ํด๋ž˜์Šค, ํŒจํ‚ค์ง€, ๋ชจ๋“ˆ๋กœ ๊ตฌ์กฐํ™”ํ•ด ๋Œ€๊ทœ๋ชจ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์ข‹์€ ์–ธ์–ด์ž„

 

 

1.2. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰

javac java_study/HelloWorld.java
java java_study.HelloWorld

์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ด ์œ„ ๋‘ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Hello world!๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค. 

 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ˆœ์„œ

  1. javac ๋ช…๋ น์œผ๋กœ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ(byte code, ํŠน์ • ๊ธฐ๊ณ„์— ์ข…์†๋˜์ง€ ์•Š์€ ์ค‘๊ฐ„ ํ‘œํ˜„)๋กœ ์ปดํŒŒ์ผ(complie)ํ•˜์—ฌ ํด๋ž˜์Šค ํŒŒ์ผ(class file)์— ์ €์žฅ
  2. java ๋ช…๋ น์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ (virtual machine)์„ ๊ตฌ๋™ํ•˜๊ณ  ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋กœ๋“œํ•ด์„œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ํ•œ๋ฒˆ ์ปดํŒŒ์ผํ•˜๋ฉด ๋ชจ๋“  ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

 

1.3. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

System.out.println("Hello world!");

System.out ์€ ๊ฐ์ฒด์ด๋ฉฐ, PrintStream ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค

PrintStream ํด๋ž˜์Šค์—๋Š” println, print ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Œ

 

์ด๋Ÿฐ ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(instance method)๋ผ๊ณ  ํ•จ

 

๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ (.) ํ‘œ๊ธฐ๋ฒ•(dot notation)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

 

object.methodName(arguments)

 

// example

import java.util.Random;

public class MethodDemo {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
        
        // String ํด๋ž˜์Šค์—์„œ String ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” length ๋ฉ”์„œ๋“œ
        System.out.println("Hello, World!".length()); 
        
        // Random ํด๋ž˜์Šค ๊ฐ์ฒด๋กœ ๋‚œ์ˆ˜ ์ƒ์„ฑ, ์ •์ˆ˜ ๋‚œ์ˆ˜ ๋ฐœ์ƒ
        System.out.println(new Random().nextInt());
        
        // ํ•œ ๊ฐ์ฒด์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๋‘ ๋ฒˆ ์ด์ƒ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์•ผ ํ•จ
        // ๋‚œ์ˆ˜ ๋‘ ๊ฐœ ์ถœ๋ ฅ
        Random generator = new Random();
        System.out.println(generator.nextInt());
        System.out.println(generator.nextInt());
    }
}

 


2. ๊ธฐ๋ณธ ํƒ€์ž…

์ž๋ฐ”์˜ ๋ชจ๋“  ๊ฐ’์ด ๊ฐ์ฒด์ธ ๊ฒƒ์€ ์•„๋‹˜

 

๋ช‡ ๊ฐ€์ง€ ๊ฐ’์€ ๊ธฐ๋ณธ ํƒ€์ž…(primitive type)์— ์†ํ•จ

  • ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ ํƒ€์ž… : byte, short, int, long
  • ๋ถ€๋™์†Œ์ˆ˜์  ํƒ€์ž… : float, double
  • ๋ฌธ์ž ํƒ€์ž… : char
  • ์ง„๋ฆฟ๊ฐ’ : boolean

 

2.1. ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ ํƒ€์ž…

  • ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ
  • ์Œ์ˆ˜ ๊ฐ’๋„ ํ—ˆ์šฉ
ํƒ€์ž… ์ €์žฅ ๊ณต๊ฐ„ ๋ฒ”์œ„(ํฌํ•จ)
byte 1๋ฐ”์ดํŠธ -128 ~ 127
short 2๋ฐ”์ดํŠธ -32,768 ~ 32,767
int 4๋ฐ”์ดํŠธ -2,147,483,648 ~ 2,147,483,647
long 8๋ฐ”์ดํŠธ -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 

โ€ป Integer.MIN_VALUE ์ƒ์ˆ˜ = ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜ ๊ฐ’

โ€ป Integer.MAX_VALUE ์ƒ์ˆ˜ = ๊ฐ€์žฅ ํฐ ์ •์ˆ˜ ๊ฐ’

 

long์ด ๋ถ€์กฑํ•˜๋ฉด BigInteger์‚ฌ์šฉ

 

2.2. ๋ถ€๋™์†Œ์ˆ˜์  ํƒ€์ž…

  • ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ„
ํƒ€์ž… ์ €์žฅ ๊ณต๊ฐ„ ๋ฒ”์œ„
float 4๋ฐ”์ดํŠธ ์•ฝ +- 3.40282347E+38F (์œ ํšจ์ž๋ฆฌ์ˆ˜ 6~7)
double 8๋ฐ”์ดํŠธ ์•ฝ +- 1.79769313486231570E+308 (์œ ํšจ์ž๋ฆฌ์ˆ˜ 15)

โ€ป Double.POSITIVE_INFINITY = ์–‘์˜ ๋ฌดํ•œ๋Œ€

โ€ป Double.NEGATIVE_INFINITY = ์Œ์˜ ๋ฌดํ•œ๋Œ€

โ€ป Double.NaN = ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’(Not a Number)

 

1.0 / 0.0 = ์–‘์˜ ๋ฌดํ•œ๋Œ€ 

0.0 / 0.0 = NaN

 

์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์€ ๋ชจ๋‘ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ

 if(x == Double.NaN) - (X) :  x๊ฐ€ NaN์ธ์ง€ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†์Œ 

 if(Double.isNaN(x)) - (O)

 

๋ถ€๋™์†Œ์ˆ˜์  ์ˆ˜๋Š” ๊ธˆ์œต ๊ณ„์‚ฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ

์™œ๋ƒ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆ˜๋ฅผ 2์ง„์ˆ˜ ์ฒด๊ณ„๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ

2.0 - 1.1 ์—ฐ์‚ฐ์„ ์ถœ๋ ฅ ํ•ด๋ณด๋ฉด 0.9๊ฐ€ ์•„๋‹ˆ๋ผ 0.8999999999999999๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. 

 

10์ง„์ˆ˜ ์ฒด๊ณ„๋กœ 1/3์„ ์ •ํ™•ํžˆ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋“ฏ์ด, 2์ง„์ˆ˜ ์ฒด๊ณ„๋กœ 1/10์„ ์ •ํ™•ํžˆ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†์Œ

 

์ปดํ“จํ„ฐ๊ฐ€ ์†Œ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹ 32bit ์— ์ˆซ์ž๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅ

์ถœ์ฒ˜ ์ฝ”๋”ฉ์• ํ”Œ - https://youtu.be/-GsrYvZoAdA

10์ง„๋ฒ• -> 2์ง„๋ฒ• ๋ณ€ํ™˜์‹œ 0.1์€ ์ˆœํ™˜์†Œ์ˆ˜์ž„

๋ฉ”๋ชจ๋ฆฌ ๋•Œ๋ฌธ์— 32์นธ์—์„œ ์ž˜๋ฆผ, ๊ทธ๋ž˜์„œ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒ.

 

0.1์„ ๋ณ€์ˆ˜์— ์ €์žฅ ํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ 0.1๊ณผ ๋น„์Šทํ•œ ์ˆซ์ž์ผ ๋ฟ 0.1์ด ์•„๋‹˜

 

1. ์ •ํ™•ํžˆ ๊ณ„์‚ฐ ํ•˜๋ ค๋ฉด ์ •์ˆ˜๋กœ (ex. 5.1๋‹ฌ๋Ÿฌ -> 5100์„ผํŠธ)
2. float ์จ์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋ฉด ๋ฐ˜์˜ฌ๋ฆผ ๋ฌธ๋ฒ• ์ ์ ˆํžˆ ํ™œ์šฉ
    precision = Math.pow(10, precision)
    Math.ceil(num * precision) / precision
3. double ์ž๋ฃŒํ˜• : ์ˆซ์ž 1๊ฐœ๋‹น 64์นธ ์‚ฌ์šฉ / ๋‹จ์ : ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ 2๋ฐฐ
(์ฐธ๊ณ ) https://youtu.be/-GsrYvZoAdA

 

2.3. char ํƒ€์ž…

์ž๋ฐ”๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” UTF-16 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์˜ ์ฝ”๋“œ ์œ ๋‹›(code unit)์„ ๋‚˜ํƒ€๋ƒ„

 

'J' = ๊ฐ’์ด 74์ธ ๋ฌธ์ž ๋ฆฌํ„ฐ๋Ÿด (= ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž U+004)

System.out.println('J' == 74); // true
System.out.println('\u004A'); // J

 

์ž‘์€๋”ฐ์˜ดํ‘œ ์ž์ฒด ํ‘œ์‹œ =\'
๋ฐฑ์Šฌ๋ž˜์‹œ ์ž์ฒด ํ‘œ์‹œ = \\ 

 

2.4. boolean ํƒ€์ž…

false, true ๊ฐ’

 

 


3. ๋ณ€์ˆ˜

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

์ž๋ฐ”๋Š” ํƒ€์ž… ๊ฒฐํ•ฉ์ด ๊ฐ•ํ•œ ์–ธ์–ด, ๊ฐ ๋ณ€์ˆ˜์—๋Š” ํ•ด๋‹น ํƒ€์ž… ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ

int total = 0; // intํ˜• ๋ณ€์ˆ˜ total ์„ ์–ธ, ์ดˆ๊ธฐํ™”
int i = 0, count; // intํ˜• ๋ณ€์ˆ˜ i์™€ count ์„ ์–ธ, count ๋Š” ์ดˆ๊ธฐํ™” x
Random generator = new Random(); // ๊ฐ์ฒด ์„ ์–ธ ๋ฐ ์ƒ์„ฑ

 

3.2. ๋ณ€์ˆ˜ ์ด๋ฆ„

  • ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ
  • ๋ฌธ์ž, ์ˆซ์ž, ๊ธฐํ˜ธ _, $๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ ($๋Š” ์ž๋™์ƒ์„ฑ ์ด๋ฆ„์šฉ, _ ์ž์ฒด๋Š” ์œ ํšจํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์•„๋‹˜)
  • ๋ผํ‹ด ์•ŒํŒŒ๋ฒณ์— ํ•œ์ •๋˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • ๋Œ€. ์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ (count์™€ Count๋Š” ๋‹ค๋ฆ„)
  • ์ด๋ฆ„์—๋Š” ๊ณต๋ฐฑ, ๊ธฐํ˜ธ ์‚ฌ์šฉ x
  • double, int ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋„ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ x
  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋‚™ํƒ€ ํ‘œ๊ธฐ๋ฒ• ์„ ํ˜ธ  (inputData)
double lotsa$ = 1000000000.0; // $๋Š” ์ž๋™์ƒ์„ฑ ์ด๋ฆ„์šฉ์ด๋ฏ€๋กœ ์‚ฌ์šฉ x
double élévation = 0.0; // ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
double π = 3.141592653589793;
์ž๋ฐ”8 ์—์„œ๋Š” _์„ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฝ๊ณ  ํ‘œ์‹œ,
์ž๋ฐ” 9๋ถ€ํ„ฐ๋Š” _์€ ์˜ˆ์•ฝ์–ด๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

3.3. ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”

๋ณ€์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

int count;
System.out.println(count);
java: variable count might not have been initialized

๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

์ž๋ฐ”์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ง์ „๊นŒ์ง€ ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ๊ธฐ๋ฅผ ๋Šฆ์ถ”๋Š” ๊ฒƒ์„ ์ข‹์€ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๊ธด๋‹ค๊ณ  ํ•จ

 

3.4. ์ƒ์ˆ˜(constant)

ํ•œ๋ฒˆ ํ• ๋‹นํ•˜๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’

์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋œ๋‹ค. 

 

final ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ

final int DAYS_PER_WEEK = 7;

์ƒ์ˆ˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์„ ์–ธํ•˜๋Š” ๊ด€๋ก€๊ฐ€ ์žˆ์Œ

 

static ํ‚ค์›Œ๋“œ๋กœ ์ƒ์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ ์™ธ๋ถ€์— ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ์Œ

public class Calendar {
	public static final int DAYS_PER_YEAR = 365; // ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
 	... 
 }

Calendar ํด๋ž˜์Šค ์™ธ์— ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด

Calendar.DAYS_PER_YEAR๋กœ ์ƒ์ˆ˜ ์ด๋ฆ„ ์•ž์— ํด๋ž˜์Šค๋ช…์„ ๋ถ™์—ฌ์ค˜์•ผ ํ•จ

 

 

System ํด๋ž˜์Šค์—๋Š” out์ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์ˆ˜๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Œ 
public static final PrintStream out 

๊ทธ๋ž˜์„œ System.out์„ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
์ƒ์ˆ˜์— ๋Œ€๋ฌธ์ž๋ฅผ ์“ฐ์ง€ ์•Š์€ ๊ฒƒ์ด ๋ช‡ ๊ฐ€์ง€ ์—†๋Š”๋ฐ ๊ทธ์ค‘ ํ•˜๋‚˜๊ฐ€ out