๐Ÿ”ฅ ํŒจ์ŠคํŠธ์บ ํผ์Šค : ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ถ€ํŠธ์บ ํ”„ 5๊ธฐ ๊ณผ์ œ Spring ํ† ์ดํ”„๋กœ์ ํŠธ

๐Ÿ—“๏ธํ”„๋กœ์ ํŠธ ์ผ์ • : 6์›” 26์ผ (์›”) ~ 6์›” 30์ผ (๊ธˆ)

ํ”„๋กœ์ ํŠธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  1. ๐Ÿ˜€ํ…Œ์ด๋ธ”๊ณผ ๋ชจ๋ธ ์„ค๊ณ„ (๊ฐ™์ด)
    • ์•ผ๊ตฌ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•œ๋‹ค.(PK, FK, UK ์ œ์•ฝ์กฐ๊ฑด ํ™•์ธ).
    • ์•ผ๊ตฌ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ์ ์ ˆํ•œ ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  2. ๐Ÿ˜Service ์ƒ์„ฑ (๊ฐ์ž ๊ตฌํ˜„)
    • ๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ฝ˜์†”์„ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
    • ์š”์ฒญ์— ๋งž๋Š” ์„œ๋น„์Šค์— ๋ฉ”์„œ๋“œ๊ฐ€ ์ ์ ˆํžˆ ์‹คํ–‰๋œ๋‹ค.
    • Scanner๋กœ ์š”์ฒญํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.
  3. ๐Ÿ˜‚DAO ์ƒ์„ฑ (๊ฐ์ž ๊ตฌํ˜„)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” DAO๋ฅผ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.
    • ์ฟผ๋ฆฌ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต์ •๋ณด๋Š” ์ฟผ๋ฆฌ๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ex) ํฌ์ง€์…˜๋ณ„ ํŒ€ ์•ผ๊ตฌ ์„ ์ˆ˜ ํŽ˜์ด์ง€๋ฅผ Pivot์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
    • DAO์—์„œ ๋””๋น„๋กœ ๋ถ€ํ„ฐ ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ DTO or Model์— ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  4. ๐Ÿคฃ๊ธฐ๋Šฅ ํ™•์ธ (๊ฐ™์ด)
    • ์•ผ๊ตฌ์žฅ ๋“ฑ๋ก, ์•ผ๊ตฌ์žฅ ๋ชฉ๋ก๋ณด๊ธฐ.
    • ํŒ€ ๋“ฑ๋ก, ํŒ€ ๋ชฉ๋ก๋ณด๊ธฐ.
    • ์„ ์ˆ˜ ๋“ฑ๋ก, ํŒ€๋ณ„ ์„ ์ˆ˜ ๋ชฉ๋ก.
    • ์„ ์ˆ˜ ํ‡ด์ถœ ๋“ฑ๋ก, ์„ ์ˆ˜ ํ‡ด์ถœ ๋ชฉ๋ก.
    • ํฌ์ง€์…˜๋ณ„ ํŒ€ ์•ผ๊ตฌ ์„ ์ˆ˜ ํŽ˜์ด์ง€.
  5. ๐Ÿ˜ƒ์™„์„ฑ๋„
    • DAO์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค.
    • ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ๋ช… ์ž‘์„ฑ์‹œ ์ผ๊ด€์„ฑ์ด ์žˆ๋‹ค. (์ฝ”๋“œ ์ปจ๋ฒค์…˜์ด ์žˆ๋‹ค)
    • ์„ ์ˆ˜ ํ‡ด์ถœ ๋“ฑ๋ก์‹œ์— ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. (Begin Transaction ~)
    • ์„ ์ˆ˜ ํ‡ด์ถœ ๋“ฑ๋ก์‹œ์— reason ์นผ๋Ÿผ์— ๋Œ€ํ•œ Enum์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

TODO

  • ์„œ๋น„์Šค ๋ ˆ์ด์–ด ๋ถ„๋ฆฌ
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ๋ฆฌํŒฉํ† ๋ง
  • ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ

์—ญํ•  ๋ถ„๋ฐฐ

  • Intellij Plugin ์‚ฌ์šฉํ•จ (Code With Me)
  • ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์ด ์ž‘์—… - (ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ์…˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ์ปค๋ฐ‹๋จ)
  • ๊ธฐ๋Šฅ์„ ๋‘˜๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ธฐ๊ฐ€ ์• ๋งคํ•ด์„œ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ง„ํ–‰ํ•จ
  • ํ…Œ์ด๋ธ”๊ณผ ๋ชจ๋ธ ์„ค๊ณ„, DB ์—ฐ๊ฒฐ (์ตœํƒœ์œค, ์†กํƒœํ˜•)
  • ์•„ํ‚คํ…์ณ ๋ฐ ๋ฉ”์ธ ๋กœ์ง ๊ตฌํ˜„ (์ตœํƒœ์œค, ์†กํƒœํ˜•)
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ ์ƒ์„ฑ (๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉด์„œ ์ง„ํ–‰)
    • ์ตœํƒœ์œค - ์•ผ๊ตฌ์žฅ ๋“ฑ๋ก, ํŒ€ ๋“ฑ๋ก, ์„ ์ˆ˜ ๋“ฑ๋ก, ์„ ์ˆ˜ ํ‡ด์ถœ ๋“ฑ๋ก, ํฌ์ง€์„ ๋ณ„ ๋ชฉ
    • ์†กํƒœํ˜• - ์ „์ฒด ์•ผ๊ตฌ์žฅ ๋ชฉ๋ก๋ณด๊ธฐ, ์ „์ฒด ํŒ€ ๋ชฉ๋ก, ํŒ€๋ณ„ ์„ ์ˆ˜ ๋ชฉ๋ก, ์„ ์ˆ˜ ํ‡ด์ถœ ๋ชฉ๋ก
  • ๋ฆฌํŒฉํ† ๋ง (์ตœํƒœ์œค, ์†กํƒœํ˜•)

DB ์ƒ์„ฑ ๐Ÿ‘Œ

  1. ์•ผ๊ตฌ์žฅ ํ…Œ์ด๋ธ” (์ด 3๊ฐœ ์•ผ๊ตฌ์žฅ)

    • stadium
    id (PK, ์ž๋™ ๋ฒˆํ˜ธ ์ฆ๊ฐ€) (int)
    name (varchar)
    created_at (timestamp)
    
  2. ํŒ€ ํ…Œ์ด๋ธ” (์ด 3๊ฐœ ํŒ€)

    • team
    id (PK, ์ž๋™ ๋ฒˆํ˜ธ ์ฆ๊ฐ€)
    stadium_id (int)
    name (varchar)
    created_at (timestamp)
    stadium_id๋Š” fk ์ž…๋‹ˆ๋‹ค.
    
  3. ์„ ์ˆ˜ ํ…Œ์ด๋ธ” (๊ฐ 9๋ช…)

    • player
    id (PK, ์ž๋™ ๋ฒˆํ˜ธ ์ฆ๊ฐ€)
    team_id (int)
    name (varchar)
    position (varchar)
    created_at (timestamp)
    team_id์™€ position์€ ๋‹ค์ค‘ ์นผ๋Ÿผ ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    team_id๋Š” fk ์ž…๋‹ˆ๋‹ค.
    
  4. ํ‡ด์ถœ์„ ์ˆ˜ ํ…Œ์ด๋ธ”

    • out_player
    id (PK, ์ž๋™ ๋ฒˆํ˜ธ ์ฆ๊ฐ€)
    player_id (int)
    reason (varchar)
    created_at (timestamp)
    player_id๋Š” fk ์ž…๋‹ˆ๋‹ค.
    

์ž๋ฐ” ํด๋ž˜์Šค ์ƒ์„ฑ ๐Ÿ‘Œ

  1. BaseBallApp ์ƒ์„ฑ
main ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ํด๋ž˜์Šค
ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ Scanner๋กœ ์ž…๋ ฅ์„ ๋ฐ›๊ณ , 
์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ํ† ๋Œ€๋กœ Service์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
Service์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋’ค return ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ Console์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†” ์˜ˆ์‹œ
1. ์ฝ˜์†”์— ์ถœ๋ ฅ๋˜๋Š” ์งˆ๋ฌธ
- ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๋‚ด์šฉ
- ์„ ์ˆ˜๋“ฑ๋ก?teamId=1&name=์ด๋Œ€ํ˜ธ&position=1๋ฃจ์ˆ˜

3. main ๋ฉ”์„œ๋“œ์—์„œ ํ•  ์ผ
- ์ž…๋ ฅ๋˜๋Š” ๊ฐ’์„ ํŒŒ์‹ฑํ•œ๋‹ค.
- ? ์•ž์˜ ๋‚ด์šฉ์ด ์„ ์ˆ˜๋“ฑ๋ก์ด๋ฉด PlayerService์˜ ์„ ์ˆ˜๋“ฑ๋ก() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
- ํ˜ธ์ถœ์‹œ์— ์ธ์ˆ˜๋กœ 1, ์ด๋Œ€ํ˜ธ, 1๋ฃจ์ˆ˜๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
- PlayerService์˜ ์„ ์ˆ˜๋“ฑ๋ก() ๋ฉ”์„œ๋“œ์—์„œ ํ•ด๋‹น ๊ฐ’์„ ๋ฐ›์•„์„œ PlayerDao์˜ insert() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
- ๊ฐ’์ด DB์— ์ž˜ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด, ๊ฒฐ๊ณผ๊ฐ€ 1๋กœ ๋ฆฌํ„ด๋  ๊ฒƒ์ด๋‹ค. 1์ด ๋ฆฌํ„ด๋˜๋ฉด Console์— ์„ฑ๊ณต์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ
๋ ฅํ•œ๋‹ค.
  1. DBConnection ์ƒ์„ฑ
DB ์—ฐ๊ฒฐ Connection์„ ์ƒ์„ฑํ•˜๋Š” ํด๋ž˜์Šค
  1. Model ์ƒ์„ฑ

๋ชจ๋ธ์€ ํ…Œ์ด๋ธ”๊ณผ ๋‹ค๋ฅด๊ฒŒ camel ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜ ๋„ค์ด๋ฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

- Stadium
- Team
- Player
- OutPlayer
  1. Dao ์ƒ์„ฑ
- StadiumDao.java
- TeamDao.java
- PlayerDao.java
- OutPlayerDao.java
  1. Service ์ƒ์„ฑ
- StadiumService.java
- TeamService.java
- PlayerService.java
- OutPlayerService.java

๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ

  1. ์•ผ๊ตฌ์žฅ ๋“ฑ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ์•ผ๊ตฌ์žฅ๋“ฑ๋ก?name=์ž ์‹ค์•ผ๊ตฌ์žฅ ์‘๋‹ต : ์„ฑ๊ณต์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

insert into stadium(name)
values(?)
  1. ์ „์ฒด ์•ผ๊ตฌ์žฅ ๋ชฉ๋ก๋ณด๊ธฐ ๐Ÿ‘Œ

์š”์ฒญ : ์•ผ๊ตฌ์žฅ๋ชฉ๋ก ์‘๋‹ต : ์•ผ๊ตฌ์žฅ ๋ชฉ๋ก์€ Model -> Stadium์„ List์— ๋‹ด์•„์„œ ์ถœ๋ ฅํ•œ๋‹ค.

select * from stadium
  1. ํŒ€ ๋“ฑ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ํŒ€๋“ฑ๋ก?stadiumId=1&name=NC ์‘๋‹ต : ์„ฑ๊ณต์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

insert into team (stadium_id, name) values (?, ?)
  1. ์ „์ฒด ํŒ€ ๋ชฉ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ํŒ€๋ชฉ๋ก ์‘๋‹ต : ํŒ€ ๋ชฉ๋ก์€ Stadium ์ •๋ณด๋ฅผ ์กฐ์ธํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ๋œ๋‹ค. TeamRespDTO๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

select t.id, t.name, t.created_at, s.name 
from stadium s
join team t on t.stadium_id = s.id
  1. ์„ ์ˆ˜ ๋“ฑ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ์„ ์ˆ˜๋“ฑ๋ก?teamId=1&name=์ด๋Œ€ํ˜ธ&position=1๋ฃจ์ˆ˜ ์‘๋‹ต : ์„ฑ๊ณต์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํฌ์ง€์…˜์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํฌ์ง€์…˜์— ๋‘ ๋ช…์˜ ์„ ์ˆ˜๊ฐ€ ๋“ฑ๋ก๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. player ํ…Œ์ด๋ธ”์— ํฌ์ง€์…˜ ์นผ๋Ÿผ์€ ํŒ€ ๋ณ„๋กœ ์œ ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, player ํ…Œ์ด๋ธ”์˜ team_id์™€ position์€ ๋‹ค์ค‘ ์นผ๋Ÿผ ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Position ํด๋ž˜์Šค
1๋ฃจ์ˆ˜ First Baseman (FB)
2๋ฃจ์ˆ˜ Second Baseman (SB)
3๋ฃจ์ˆ˜ Third Baseman (TB)
ํฌ์ˆ˜ Catcher (C)
ํˆฌ์ˆ˜ Pitcher (P)
์œ ๊ฒฉ์ˆ˜ Short Stop (SS)
์ขŒ์ต์ˆ˜ Left Fielder (LF)
์ค‘๊ฒฌ์ˆ˜ Center Fielder (CF)
์šฐ์ต์ˆ˜ Right Fielder (RF)

insert into player (team_id, name, position) values (?, ?, ?)
  1. ํŒ€๋ณ„ ์„ ์ˆ˜ ๋ชฉ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ์„ ์ˆ˜๋ชฉ๋ก?teamId=1 ์‘๋‹ต : ์„ ์ˆ˜ ๋ชฉ๋ก์€ Model -> Player๋ฅผ List์— ๋‹ด์•„์„œ ์ถœ๋ ฅํ•œ๋‹ค. (team_id๋Š” ์ถœ๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค)

select id, name, position, created_at from player
where team_id = 1
  1. ์„ ์ˆ˜ ํ‡ด์ถœ ๋“ฑ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ํ‡ด์ถœ๋“ฑ๋ก?playerId=1&reason=๋„๋ฐ• ์‘๋‹ต : ์„ฑ๊ณต์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐœ ์ด์ƒ์˜ write ๋ฌธ์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๊ฐ€ Service์—์„œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. out_player์— ํ‡ด์ถœ ์„ ์ˆ˜๋ฅผ insertํ•˜๊ณ , player ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ์„ ์ˆ˜์˜ team_id๋ฅผ null๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

insert -> out_player : insert into out_player (player_id, reason) values (?, ?)
update -> player : update player set team_id = null where id = ?
  1. ์„ ์ˆ˜ ํ‡ด์ถœ ๋ชฉ๋ก ๐Ÿ‘Œ

์š”์ฒญ : ํ‡ด์ถœ๋ชฉ๋ก ์‘๋‹ต : OutPlayerRespDTO์— ๋‹ด์•„์„œ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

select p.name, p.position, op.reason, op.createdAt
from player p
left join out_player op on op.player_id = p.id

์•„๋ž˜๋Š” player ํ…Œ์ด๋ธ”๊ณผ out_player ํ…Œ์ด๋ธ”์ด join ๋œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ํ‡ด์ถœ ๋œ ์„ ์ˆ˜๋Š” ์˜†์— ํ‘œ์‹œ๊ฐ€ ๋˜๊ณ , ํ‡ด์ถœ ๋˜์ง€ ์•Š์€ ์„ ์ˆ˜๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ OuterJoin์— ๋Œ€ํ•ด์„œ ์ดํ•ด ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (pdf ์ฐธ๊ณ )

  1. ํฌ์ง€์„ ๋ณ„ ํŒ€ ์•ผ๊ตฌ ์„ ์ˆ˜ ํŽ˜์ด์ง€

์š”์ฒญ : ํฌ์ง€์…˜๋ณ„๋ชฉ๋ก ์‘๋‹ต : PositionRespDto ์— ๊ฐ’์„ ๋‹ด์•„์„œ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.


select 
   MAX(CASE WHEN a.team_name = '" + team + "' THEN a.player_name ELSE '-' END) as " + team + ",
   ยทยทยท
   a.position,
from (
   select p.name as player_name, p.position, t.name as team_name
   from team t 
   join player p on p.team_id = t.id	
) a
group by a.position;

ํฌ์ง€์…˜์€ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋กฏ๋ฐ, NC, ๊ธฐ์•„, ํ•ดํƒœ๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ฐ’์ด ์นผ๋Ÿผ์œผ๋กœ ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ˜•ํƒœ์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์‹ค๋ฌด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด, ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๋ น ํšŒ์‚ฌ์˜ ๋‹ค๋ฅธ ๋ถ€์„œ์—์„œ ์•„๋ž˜์˜ ๊ฐ™์€ ์š”๊ตฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊น€๋Œ€๋ฆฌ ๊ฐํŒ€์— 1๋ฃจ์ˆ˜๊ฐ€ ๋ˆ„๊ตฐ์ง€, 2๋ฃจ์ˆ˜๊ฐ€ ๋ˆ„๊ตฐ์ง€ ๋ณด๊ณ  ์‹ถ์–ด
  • ๊ทธ๋Ÿฐ๋ฐ, ๊ธฐ์กด์— ๋ณด์—ฌ์ฃผ๋˜ ๋ฐฉ์‹์€ ์„ธ๋กœ๋กœ ๋„ˆ๋ฌด ๊ธธ๊ฒŒ ๋ณด์—ฌ์„œ ๋ณด๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํž˜๋“ค์–ด
  • ๊ฐ€๋กœ๋กœ ์ข€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†๊ฒ ๋‚˜?

๋‹น์—ฐํžˆ ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋ฌธ ์šฉ์–ด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์š”๊ตฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ”ผ๋ฒ—์„ ์‚ฌ์šฉํ•ด์„œ ์„ธ๋กœ๋กœ ๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€๋กœ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.