[Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŒŒ์ด์ฌ ํŽธ] 1์ฃผ์ฐจ

2026. 3. 1. 23:44ใ†๐ŸŒŠ๋„์„œ

[Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŒŒ์ด์ฌ ํŽธ] ์˜ 1์ฃผ์ฐจ ๋™์•ˆ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค!

 

 

 

 

 

1. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ : ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

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

: ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜!

1์ดˆ : 2,000๋งŒ ๋ฒˆ ~ 1์–ต ๋ฒˆ์˜ ์—ฐ์‚ฐ

(์ผ๋ฐ˜์ ์ธ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ ๊ธฐ์ค€!)

  • ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ •์˜ํ•˜๋Š” ์œ ํ˜• 3๊ฐ€์ง€
    • ๋น… - ์˜ค๋ฉ”๊ฐ€ : ‘์ตœ์„ ์˜ ๊ฒฝ์šฐ’์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜
    • ๋น… - ์„ธํƒ€ : ‘๋ณดํ†ต์˜ ๊ฒฝ์šฐ’ ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜ (์ตœ์„  - ์ตœ์•…์˜ ์ผ€์ด์Šค์˜ ์ ˆ๋ฐ˜)
    • ๋น… - ์˜ค : ‘์ตœ์•…์˜ ๊ฒฝ์šฐ’ ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜

1-1 ์‹œ๊ฐ„๋ณต์žก๋„ ํ‘œ๊ธฐ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

์ฝ”ํ…Œ์—์„œ ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

→ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•ด์•ผ๋งŒ ํ•˜๋ฏ€๋กœ, ํŒ๋‹จ์‹œ ์ตœ์•…์˜ ์ผ€์ด์Šค๋ฅผ ์—ผ๋‘์— ๋‘ฌ์•ผ ํ•œ๋‹ค!

๋น… - ์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๋ฐ์ดํ„ฐ ํฌ๊ธฐ (N) ์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ(์ˆ˜ํ–‰ ์‹œ๊ฐ„)ใ…‡

ํšจ์œจ ์ œ์ผ ์ข‹์Œ O(logN)

: O(N)
: O(NlogN)
: O(N^2)
: O(2^n)
์ œ์ผ ๋А๋ฆผ O(N!)

1-2 ์‹œ๊ฐ„ ๋ณต์žก๋„ ํ™œ์šฉํ•˜๊ธฐ

  • ๋ฌธ์ œ 000: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ
    • ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2)
    • ๋ณ‘ํ•ฉ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„: O(nlogn)
      • ์‹œ๊ฐ„ ์ œํ•œ 2์ดˆ (= 1์ดˆ 2,000๋งŒ ๋ฒˆ ๊ธฐ์ค€, 2์ดˆ์— 4,000๋งŒ ๋ฒˆ )
      • 40,000,000
    • ์ž…๋ ฅN๊ฐœ์˜ ์ค„์— ์ˆซ์ž ์ฃผ์–ด์ง ( |N| ≤ ๋ฐฑ ๋งŒ ๋ฒˆ ) - ์ˆ˜๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š์Œ
    • 1๋ฒˆ์งธ ์ค„ ๋ถ€ํ„ฐ ~ N๊ฐœ์˜ ์ค„์— ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ 1์ค„์— 1๊ฐœ์”ฉ ์ถœ๋ ฅํ•œ๋‹ค
  • N ๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋Œ€, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์—ฐ์‚ฐ ํšŸ์ˆ˜ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•

์—ฐ์‚ฐ ํšŸ์ˆ˜ = ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ n๊ฐ’์— ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๋Œ€์ž…ํ•˜์—ฌ ๋„์ถœํ•จ

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ํ•ฉ์„ฑ ํ‰๊ฐ€

: ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(N)๋ฅผ ๋‹จ์„œ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ถ”์ธก ๊ฐ€๋Šฅ

  • ๋ฒ„๋ธ” ์ •๋ ฌ = (1,000,000)^2 = 1,000,000,000,000 (์•ฝ 1์กฐ) > 40,000,00 → ๋ถ€์ ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜!
  • ๋ณ‘ํ•ฉ ์ •๋ ฌ = $1000000\log_{2}{1000000}$ $\approx$ 200,000,000 < 40,000,00 → ์ ํ•ฉ! ์•Œ๊ณ ๋ฆฌ์ฆ˜$\log_{2}{10} \approx 3.322$
  • [์ฐธ๊ณ !]

์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ ๋กœ์ง ๊ฐœ์„ ํ•˜๊ธฐ

Step1. ๊ฐ€์žฅ ๋จผ์ €, ์ฝ”๋“œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋„์ถœํ•œ๋‹ค

→ ๊ทธ๋Ÿฌ๋ ค๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ ๋„์ถœ ๊ธฐ์ค€์„ ์•Œ์•„์•ผ ํ•จ!

๋„์ถœ ๊ธฐ์ค€ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค!

  1. ์ƒ์ˆ˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์—์„œ ์ œ์™ธํ•œ๋‹ค์ฝ”๋“œ์— ๋ฐ˜๋ณต๋ฌธ์ด 3๊ฐœ๊ฐ€ ๊ฐ๊ฐ ์žˆ์–ด์„œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ 3N์ด ๋˜๋”๋ผ๋„,
  2. ์ƒ์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋‘˜ ๋‹ค ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n) ์œผ๋กœ ๊ฐ™์Œ!
  3. → ๋ฐ˜๋ณต๋ฌธ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” N๋ฒˆ
  4. ๊ฐ€์žฅ ๋งŽ์ด ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๊ฐ€ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ธฐ์ค€์ด ๋œ๋‹ค์ด์ค‘ for๋ฌธ 1๊ฐœ๋กœ ์ธํ•œ N^2 ์ด๋‹ค!
  5. → ์ผ๋ฐ˜ for๋ฌธ์ด 10๊ฐœ, ์ด์ค‘ for ๋ฌธ์ด 1๊ฐœ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ์—ฌ๊ธฐ์—์„œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š”

Step2. ์—ฐ์‚ฐ์ด ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„์„ ์ฐพ์•„์„œ ์—ฐ์‚ฐ์— ๋”์šฑ ํšจ์œจ์ ์ธ ๊ตฌ์กฐ๋กœ ์ˆ˜์ •!


2. ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์˜ค๋ฅ˜ ์žก๋Š” ๋ฒ•: ๋””๋ฒ„๊น…

2-1. ๋””๋ฒ„๊น…์ด ์ค‘์š”ํ•œ ์ด์œ 

๋””๋ฒ„๊น…์ด๋ž€

debugging : ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‚˜ ๋…ผ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„ ๋ฐ”๋กœ์žก๋Š” ๊ณผ์ •!

๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ฐพ์•„์คŒ, ์ฃผ๋กœ ๋…ผ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•จ์ด๋‹ค!

๋””๋ฒ„๊น…์€ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ๊ธฐ์ˆ ์ด๊ณ , ๊ทธ๋ƒฅ ์•Œ์•„ ๋‘๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผํ•˜๋Š” ๊ณผ์ •์ด๋‹ค!

๋ฐฉ๋ฒ•

  1. ์ฝ”๋“œ์—์„œ ๋””๋ฒ„๊น…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ค„์— ์ค‘๋‹จ์ (breakpoint)์„ ์„ค์ •ํ•œ๋‹ค
  2. IDE์˜ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๋ฉด, ์ฝ”๋“œ๋ฅผ 1์ค„์”ฉ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ , ๋‹ค์Œ ์ค‘๋‹จ์ ๊นŒ์ง€ ์‹คํ–‰ ๊ฐ€๋Šฅ!
  3. (์ด ๊ณผ์ •์—์„œ ์ถ”์ ํ•  ๋ณ€์ˆซ๊ฐ’๋„ ์ง€์ • ๊ฐ€๋Šฅ!), ๋ณ€์ˆ˜์˜ ๊ฐ’ ๋ณ€ํ™” ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ํŒŒ์•…ํ•˜๊ธฐ
  4. ๋ณ€์ˆ˜๊ฐ’ ์ด์™ธ์—๋„ ์›ํ•˜๋Š” ์ˆ˜์‹์„ ์ž…๋ ฅํ•ด ๋…ผ๋ฆฌ ์˜ค๋ฅ˜ ํŒŒ์•… ๊ฐ€๋Šฅ!

2-2. ๋””๋ฒ„๊น… ํ™œ์šฉ ์‚ฌ๋ก€ ์‚ดํ”ผ๊ธฐ

์˜ค๋ฅ˜ ์ ๊ฒ€๋ฐฉ์•ˆ

1. ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ์ฒดํฌ

→ ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๊ณ  ์žˆ๋Š”์ง€, ๋””๋ฒ„๊น…์„ ์ด์šฉํ•ด ํ™•์ธํ•ด๋ณด๊ธฐ

2. ๋ฐ˜๋ณต๋ฌธ ์ธ๋ฑ์Šค ๋ฒ”์œ„ ๋„˜์–ด๊ฐ€์ง€ ์•Š์•˜๋Š”์ง€ ์ฒดํฌ

→ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ฐ˜๋ณต ๋ฒ”์œ„๋ฅผ ์ž˜๋ชป ์ง€์ •ํ•˜๊ฑฐ๋‚˜,

๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

๋ฐฐ์—ด ์ธ๋ฑ์Šค๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์‹ค์„ ๊ฐ„๊ณผํ•˜๊ฑฐ๋‚˜,

๋ฐ˜๋ณต๋ฌธ์„ N๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜์—ฌ N-1 ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋•Œ๋„ ์žˆ๋‹ค

 

๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋งˆ๋‹ค, ๋ฒ”์œ„์™€ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฅผ ๊ผผ๊ผผํ•˜๊ฒŒ ํ™•์ธํ•˜๊ณ ,

ํ˜น์‹œ ๋ชจ๋ฅผ ์ž…๋ ฅ ์‹ค์ˆ˜๋ฅผ ๋Œ€๋น„ํ•ด ๋””๋ฒ„๊น…ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ผ ๊ฒƒ!

 

3. ์ž˜๋ชป๋œ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ฒดํฌ

4. ํŒŒ์ด์ฌ ์ž๋™ ํ˜• ๋ณ€ํ™˜ ์ฒดํฌ

ํŒŒ์ด์ฌ์—์„œ์˜ ๋‚˜๋ˆ„๊ธฐ๋Š” / ์—ฐ์‚ฐ์ž์™€, // ์—ฐ์‚ฐ์ž ๋‘ ๊ฐ€์ง€ ์ด๋‹ค!

  • / ์—ฐ์‚ฐ: ๋‚˜๋ˆ—์…ˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ float ํ˜•์œผ๋กœ ์ถœ๋ ฅ → ์†Œ์ˆ˜์ ์˜ ๊ฒฐ๊ณผ๊นŒ์ง€ ๋ณด์—ฌ์ค€๋‹ค!
  • // ์—ฐ์‚ฐ: ๋‚˜๋ˆ—์…ˆ์„ ํ•œ ๊ฒฐ๊ด๊ฐ’์„ int ํ˜•์œผ๋กœ ์ถœ๋ ฅ → ๋ชซ์˜ ๊ฒฐ๊ณผ๋งŒ ๋ณด์—ฌ์ค€๋‹ค!
  • % ์—ฐ์‚ฐ: ๋‚˜๋ˆ—์…ˆ์„ ํ•œ ํ›„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค! 

 

 

 

 

 

 

 

  • Chapter 2 ๋ชฉํ‘œ: ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€๋ จ๋œ ํ•ต์‹ฌ ์ด๋ก ๊ณผ, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ „ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

๋ฏธ๋ฆฌ ๋ณด๋Š” ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์˜ค๋‹ต ๋…ธํŠธ

  • ๋ชฉํ‘œ: ๋ฌธ์ œ ํ’€์ด์—์„œ ์ž์ฃผ ์‹ค์ˆ˜ํ•˜๋Š” ์œ ํ˜•, ํŒ ์œผ๋กœ ๋ฏธ๋ฆฌ ์ตํ˜€๋‘๊ธฐ!

1. ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์›์ธ์„ ์ฐพ์•„ ํ•ด๊ฒฐํ•˜๊ธฐ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1. ํ’€์ด ๋กœ์ง์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ํ—ˆ์šฉ ๋ฒ”์œ„ ๋‹ค์‹œ ์ ๊ฒ€ํ•˜๊ธฐ

๋ฌธ์ œ ํ’€์ด๋ฅผ ์„ค๊ณ„ ํ•  ๋•Œ,

ํ•ด๋‹น ๋ฐฉ์‹์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ œํ•œ ์‹œ๊ฐ„ ๋ฒ”์œ„ ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š”์ง€๋ฅผ ๋จผ์ € ์ฒดํฌํ•˜๊ณ  ๋“ค์–ด๊ฐ€์•ผํ•จ!

→ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’๋‹ค๋ฉด ํ’€์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 2. ์ž…/์ถœ๋ ฅ ์ตœ์ ํ™”!

  • ์ž…์ถœ๋ ฅ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•:sys.stdin.readline() ๊ณผ sys.stdout.write()๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค!
  • input() , print() ๋Œ€์‹ ,
  • ์ด๊ฑธ ์“ฐ๋ฉด ์–ผ๋งŒํผ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€?
    • 1,000,000๊ฐœ์˜ ์ •์ˆ˜ ์ž…์ถœ๋ ฅ ์‹œ๊ฐ„ ์ฐจ์ด ๋น„๊ต ํ‘œ๋ฐฉ์‹ ์ž…๋ ฅ ์†๋„(์ดˆ) ์ถœ๋ ฅ ์†๋„(์ดˆ) ์ด ์†Œ์š” ์‹œ๊ฐ„(์ดˆ)
      input()๊ณผ print() 1.8 1.2 3
      sys.stdin.readline()๊ณผ sys.stdout.write() 0.3 0.3 0.6
    • → ์ด ์†Œ์š”์‹œ๊ฐ„์—์„œ ํฐ ์ฐจ์ด๊ฐ€ ์ƒ๊ธด๋‹ค! (์‹ค์ œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆœ ์žˆ์Œ)
  • ๊ฐ๊ฐ์˜ ์ž‘๋™ ์›๋ฆฌ ์ฐจ์ด[๋น„๊ต]
    • input() ์€ ํ˜ธ์ถœ๋  ๋•Œ ๋งˆ๋‹ค ํ•œ ์ค„์„ ์ฝ์–ด → ๋์˜ ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
    • (์ˆซ์ž ๋ณ€ํ™˜ ๋“ฑ ์ถ”๊ฐ€ ํŒŒ์‹ฑ์€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ!)
    • print()๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถœ๋ ฅ ๋‚ด์šฉ์„ ๋ฒ„ํผ์— ๋ชจ์•˜๋‹ค๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋น„์šด๋‹ค
    • → ๋ฐ˜๋ณต ํ˜ธ์ถœ์ด ๋งŽ์œผ๋ฉด ์ž‘์€ ๋‹จ์œ„์˜ ์žฆ์€ ์“ฐ๊ธฐ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ!
  • ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์•„์ง€๋ฉด, ํฐ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—!

 

  • sys.stdin.readline() ์€ ์ž…๋ ฅ ๋ฒ„ํผ์—์„œ ํ•œ ์ค„ ์ „์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ์ฝ์Œ
  • → ๋Œ€๋Ÿ‰ ์ž…๋ ฅ์—์„œ ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค!
  • sys.stdout.write() : ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋ถ™์ด์ง€ ์•Š์Œ!(๋ฌธ์ž์—ด๋งŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ •์ˆ˜๋Š” str() ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ!)
  • → ์—ฌ๋Ÿฌ ์ถœ๋ ฅ์„ ๋ชจ์•„ ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ•˜๋ฉด ํฐ ์†๋„ํ–ฅ์ƒ ๊ฐ€๋Šฅ!

 

2. ์ธ๋ฑ์Šค์— ์˜๋ฏธ ๋ถ€์—ฌํ•˜์—ฌ ํ’€์–ด ๋ณด๊ธฐ

์ธ๋ฑ์Šค์˜ ์—ญํ• 

  1. ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์—ญํ• 
  2. ์ธ๋ฑ์Šค๋ฅผ ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ์ˆซ์žฃ๊ฐ’ ์ž์ฒด์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹!
  3. → ํ•ด์‹ฑ ๊ฐœ๋…์„ ์ ์šฉํ•˜์ž!

์ธ๋ฑ์Šค์— ํ•ด์‹ฑ ๊ฐœ๋… ์ ์šฉ

  • ์ ์šฉ ์˜ˆ์‹œA[1] : A๋ผ๋Š” ๋ฐฐ์—ด์˜ 1๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ,1์ด๋ผ๋Š” ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ
    • A[1] = 2, 1์ด๋ผ๋Š” ๊ฐ’์ด 2๊ฐœ ์žˆ๋‹ค๋Š” ๋œป์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ0 1 2 3 4 
      5 2 1 6 9
  • ์ธ๋ฑ์Šค๋ฅผ ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ์ˆซ์žฃ๊ฐ’ ์ž์ฒด์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค
  • → ์ˆซ์ž๊ฐ’์œผ๋กœ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•œ ๊ฒฝ์šฐ,
  • ์–ธ์ œ ์ ์šฉํ•˜๋ฉด ์ข‹์€๊ฐ€?→ 1์ดˆ ์•ˆ์— ์ •๋ ฌ์ด ์–ด๋ ต๋‹ค
  • ์ธ๋ฑ์Šค๋ฅผ ๊ฐ’ ์ž์ฒด๋กœ ํ™œ์šฉํ•˜๋ฉด, ๊ณ„์ˆ˜ ์ •๋ ฌ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค!
  • ์˜ˆ) 1000๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ 10,000,000๊ฐœ๋ฅผ 1์ดˆ ์•ˆ์— ์ •๋ ฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ,
  • ์ธ๋ฑ์Šค์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•œ ๋Œ€ํ‘œ ์‚ฌ๋ก€ - [๊ณ„์ˆ˜ ์ •๋ ฌ]→ ์—ฌ๊ธฐ์„œ count ๋ฆฌ์ŠคํŠธ์˜๊ฐ’์€ ํ•ด๋‹น ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜!
  • ์ธ๋ฑ์Šค๋Š” ์ˆซ์ž ์ž์ฒด
  • import sys N = int(sys.stdin.readline()) count = [0]* 1001 numbers = list(map(int, sys.stdin.readline().split())) for number in numbers: **count[number] += 1 #์ธ๋ฑ์Šค์— ์ˆซ์ž๊ฐ’์œผ๋กœ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ!** for i in range(1001): #0~1000 ์ค‘์— if count[i] != 0: #i๊ฐ’์ด 0๊ฐœ์ธ ์ˆ˜๋ฉด for _ in range(count[i]): #0๋ถ€ํ„ฐ count[i]์˜ ๊ฐœ์ˆ˜-1๊นŒ์ง€ sys.stdout.write(str(i)+ ' ')

๋น„๊ต ์—ฐ์‚ฐ์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š์•„๋„ 10,000,000๊ฐœ์˜ ์ˆซ์ž๋ฅผ 1์ดˆ ์•ˆ์— ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค!

 

์‹ค์ œ ์ฝ”ํ…Œ ์ƒํ™ฉ์—์„œ๋Š”, ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค์— ์ ์ ˆํ•œ ์˜๋ฏธ๋ฅผ ์ง์ ‘ ๋ถ€์—ฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋„ ์ž์ฃผ ์ถœ์ œ๋˜๋ฏ€๋กœ,

⇒ ์ธ๋ฑ์Šค๋ฅผ ๋‹จ์ˆœํžˆ ‘๋ช‡ ๋ฒˆ์งธ ์ˆœ์„œ’ ๋กœ๋งŒ ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ 

๋ฌธ์ œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์˜๋ฏธ๋กœ ๋ณ€ํ™˜ํ•ด ๋ณด๋Š” ์—ฐ์Šต์ด ์ค‘์š”ํ•˜๋‹ค!!

 

3. ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์˜ ์ค‘์š”์„ฑ ์•Œ์•„๋ณด๊ธฐ

  • ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ด ์™œ ์ค‘์š”ํ•œ๊ฐ€?

์ •๋‹ต์„ OO์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•ด๋ผ → ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์–ธ์ œ ํ•˜๋А๋ƒ๊ฐ€ ์†๋„ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค!

  • ๋ถ„๋ฐฐ ๋ฒ•์น™ ํ™œ์šฉ์˜ ์ค‘์š”์„ฑ!๋ถ„๋ฐฐ ๋ฒ•์น™์„ ํ†ตํ•ด ๊ฐ’์„ ์ค‘๊ฐ„์ค‘๊ฐ„์”ฉ ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ์ด ์—ฐ์‚ฐ ์†๋„๋ฅผ ์ค„์ธ๋‹ค!
  • ๋˜ํ•œ ๋งค์šฐ ํฐ ๊ฐ’์„ ํ•œ ๋ฒˆ์— ์—ฐ์‚ฐํ•˜๊ธฐ ๋ณด๋‹ค,

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ด ์ž์ฃผ ํ™œ์šฉ๋˜๋Š” ๋ถ„๋ฐฐ ๋ฒ•์น™

  • ์ฃผ์˜! ๋‚˜๋ˆ—์…ˆ์€ ๋ถ„๋ฐฐ ๋ฒ•์น™์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค
  1. ๋ง์…ˆ์˜ ๋ถ„๋ฐฐ ๋ฒ•์น™ : (A+B) % C = (A%C + B%C)%C
  2. ๋บ„์…ˆ์˜ ๋ถ„๋ฐฐ ๋ฒ•์น™ : (A-B) % C = (A%C - B%C)%C
  3. ๊ณฑ์…ˆ์˜ ๋ถ„๋ฐฐ ๋ฒ•์น™ : (A*B)%C = (A%C * B%C) %C

→ ๋‚˜๋ˆ—์…ˆ์€ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์˜ ๋ถ„๋ฐฐ ๋ฒ•์น™์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‚˜๋จธ์ง€(๋ง์…ˆ, ๋บ„์…ˆ, ๊ณฑ์…ˆ์€ ์„ฑ๋ฆฝ)

ํฐ ๊ฐ’์„ ํ•œ ๋ฒˆ์— ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค! → ๋ถ„๋ฐฐ ๋ฒ•์น™์„ ์ž˜ ํ™œ์šฉํ•˜์ž

ํŒŒ์ด์ฌ์—์„œ๋Š” intํ˜•์ด ์ž๋™์œผ๋กœ ํ™•์žฅ๋˜๋ฏ€๋กœ, ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์ˆซ์ž๊ฐ€ ๋งค์šฐ ์ปค์ง€๋ฉด, ๊ณ„์‚ฐ ์†๋„๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋А๋ ค์ง€๊ณ , ์‹œ๊ฐ„ ์ดˆ๊ณผ์— ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค!

๋งˆ์ง€๋ง‰์—๋งŒ %์—ฐ์‚ฐ์„ ์ ์šฉํ•ด๋„ ์ •๋‹ต ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,

์ฑ„์  ์„œ๋ฒ„์—์„œ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์˜ค๋‹ต์ด ๋  ์ˆ˜ ์žˆ๋‹ค!

  • ํ™œ์šฉ ์˜ˆ์‹œ : [1๋ถ€ํ„ฐ 100,000๊นŒ์ง€ ๊ณฑํ•œ ๊ฐ’์„ 1,000,000,007๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜์‹œ์˜ค]
import time

MOD = 1000000007
answer = 1
start = time.time()

"""
for i in range(1,100001):
	answer *= i 

result = answer % 1000000007 #๊ณฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ๋ฒˆ์— ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ํ•˜๊ธฐ๋ณด๋‹ค๋Š”,
"""
**for i in range(1,100001):
	answer = (answer *i)%MOD**
# ๋ฐ˜๋ณต๋ฌธ ํ•œ ์ˆซ์ž ๋งˆ๋‹ค ๊ณฑ์…‰, ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์†๋„ ํ–ฅ์ƒ๋œ๋‹ค

์ฆ‰, ์ •๋‹ต์„ OO์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•ด๋ผ ์—์„œ ์ •๋‹ต์„ ๊ตฌํ•œ ํ›„ ๋งˆ์ง€๋ง‰์— ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ , ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค!

⇒ ๋ถ„๋ฐฐ ๋ฒ•์น™์„ ํ†ตํ•ด, ๊ณฑ์…ˆ, ๋ง์…ˆ ๋“ฑ ์ค‘๊ฐ„ ๊ณ„์‚ฐ์„ ํ•  ๋•Œ ๋งˆ๋‹ค ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์ ์šฉํ•˜๋Š” ์Šต๊ด€์ด ํ•„์ˆ˜์ด๋‹ค!

4. ์ •๋ ฌ ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ

  • ์ •๋ ฌ ๊ธฐ์ดˆ๋ฅผ ๋‹ค์ ธ์•ผ ํ•˜๋Š” ์ด์œ ?
    1. ์ด์ง„ ํƒ์ƒ‰ ๊ณผ ๊ฐ™์€ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—๋งŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ!
    2. ๋˜ํ•œ, ์ •๋ ฌ์€ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํˆฌ ํฌ์ธํ„ฐ, ์šฐ์„ ์ˆœ์œ„ ํ ๋ฌธ์ œ์—์„œ๋„ ์ „์ฒ˜๋ฆฌ ์‹œ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผํ•จ!

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ : ์ž‘์€ ๊ฐ’ to ํฐ ๊ฐ’

๋ฐ์ดํ„ฐ์˜ ์›๋ณธ์ด ์œ ์ง€๋˜์–ด์•ผ ํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฐฉ์‹ ์‚ฌ์šฉ!

  • ๋ฐฉ์‹1: ํŒŒ์ด์ฌ .sort() ์ด์šฉํ•œ ์ •๋ ฌ!
    #์›๋ณธ ๋ฆฌ์ŠคํŠธ ์„ ์–ธ
    A = [5,3,2,4,1]
    
    # ๋ฐฉ์‹1 : list.sort() : ๋ฆฌ์ŠคํŠธ ์ž์ฒด๋ฅผ ์ •๋ ฌ (in-place)
    A.sort()
    
  • = ๋ฆฌ์ŠคํŠธ(์›๋ณธ) ์ž์ฒด๋ฅผ ์ •๋ ฌ! (in-place ์ •๋ ฌ) : ๋ฐ˜ํ™˜๊ฐ’ None
  • ๋ฐฉ์‹2 : ํŒŒ์ด์ฌ sorted() ์ด์šฉํ•œ ์ •๋ ฌ!
    #์›๋ณธ ๋ฆฌ์ŠคํŠธ ์„ ์–ธ
    A = [5,3,2,4,1]
    
    # ๋ฐฉ์‹2 : sorted(list) : ๋ฆฌ์ŠคํŠธ์˜ ์ •๋ ฌ๋œ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ (์›๋ณธ์€ ์œ ์ง€)
    B = sorted(A)
    
  • = ์ •๋ ฌ๋œ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜!

๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ : ํฐ ๊ฐ’ to ์ž‘์€ ๊ฐ’

reverse=True ์˜ต์…˜ ์ถ”๊ฐ€ํ•ด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๊ตฌํ˜„!

#์›๋ณธ ๋ฆฌ์ŠคํŠธ ์„ ์–ธ
A = [5,3,2,4,1]

# ๋ฐฉ์‹1์— ๋‚ด๋ฆผ์ฐจ์ˆœ ์˜ต์…˜ ์ถ”๊ฐ€
A.sort**(reverse=True)**
print("๋‚ด๋ฆผ์ฐจ์ˆœ ๊ฒฐ๊ณผ:",A)

# ์ •๋ ฌ๋œ ๋ณต์‚ฌ๋ณธ ๋ฐ˜ํ™˜(์›๋ณธ ์œ ์ง€)
B = sorted**(A, reverse=True)**
print("๋‚ด๋ฆผ์ฐจ์ˆœ ๋ณต์‚ฌ๋ณธ:",B)

์ถ”๊ฐ€) ์ •๋ ฌ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ : ๋ถ€ํ˜ธ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ฐ˜์ „!

#์›๋ณธ ๋ฆฌ์ŠคํŠธ ์„ ์–ธ
A = [5,3,2,4,1]

**#๋ถ€ํ˜ธ๋ฅผ ๋ฐ˜์ „์‹œํ‚ค๊ณ , ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„, ๋‹ค์‹œ ๋ถ€ํ˜ธ ๋˜๋Œ๋ฆฌ๊ธฐ!**
A = [-x for x in A] #๋ถ€ํ˜ธ ๋ฐ˜์ „ : [-5,-3,-2,-4,-1]
A.sort() # ์ด๋•Œ์˜ A๋Š” [-5,-4,-3,-2,-1]

A = [-x for x in A] # ๋ถ€ํ˜ธ ๋ฐ˜์ „ : [5,4,3,2,1] -> ๋‚ด๋ฆผ์ฐจ์ˆœ!์ด ๋จ

5. ๋‹ค์ค‘ ์กฐ๊ฑด ์ •๋ ฌ ์ตํžˆ๊ธฐ

  • ๋‹ค์ค‘ ์กฐ๊ฑด ์ •๋ ฌ์ด๋ž€? : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ
  • ๋Œ€ํ‘œ์ ์œผ๋กœ ํŠœํ”Œ ๊ธฐ๋ฐ˜ ์ •๋ ฌ๊ณผ, ๋”•์…”๋„ˆ๋ฆฌ ๊ธฐ๋ฐ˜ ์ •๋ ฌ์ด ์žˆ๋‹ค

ํŠœํ”Œ ๊ธฐ๋ฐ˜ ์ •๋ ฌ

  • ํŠœํ”Œ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹ : ๋ฐ์ดํ„ฐ๋ฅผ ํŠœํ”Œ๋กœ ๊ตฌ์„ฑ ํ›„→ .sort() ๋‚˜ sorted() ์˜ key์ธ์ž์— lambda๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌ ๊ธฐ์ค€์„ ์ง€์ •
  • ํŠœํ”Œ ํ˜•ํƒœ๋กœ ํ•˜๋Š” ์ด์œ ?
  • ์ •๋ ฌ ๊ธฐ์ค€์„ ํŠœํ”Œ๋กœ ๋ฌถ์œผ๋ฉด, ์•ž์— ์žˆ๋Š” ์กฐ๊ฑด๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ!
  • ์˜ˆ์‹œ - ์˜์–ด ์ ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, ๋™์ ์ธ๊ฒŒ ์žˆ์œผ๋ฉด ์ˆ˜ํ•™์ ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆ˜๋„ ๊ณ ๋ คํ•˜๋Š” ์ •๋ ฌ
    • socres.sort(key=lambda x: (-x[0], -x[1]))
      • key=lambda x:ํŠœํ”Œ์˜ ๊ฐ ์š”์†Œ๋ฅผ x ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ ,
      • ๊ทธ x๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ˜•ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ• ์ง€ ์ •ํ•ด์ค€๋‹ค!
      • → ์ •๋ ฌ ๊ธฐ์ค€์„ ์ปค์Šคํ…€(์‚ฌ์šฉ์ž ์ •์˜) ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ!
      • (-x[0], -x[1])-x[0] : ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ๋งˆ์ด๋„ˆ์Šค ๋ถ™์—ฌ์„œ ์ •๋ ฌ<aside>
        • ์˜์–ด๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(๋†’์€ ์ˆœ) → ์ˆ˜ํ•™์€ ์˜ค๋ฆ„์ฐจ์ˆœ(๋‚ฎ์€ ์ˆœ) ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
        • scores.sort(key=lambda x: (-x[0], x[1]))
        </aside>
      • -x[1] : ๋‘ ๋ฒˆ์งธ ์š”์†Œ์— ๋งˆ์ด๋„ˆ์Šค ๋ถ™์—ฌ์„œ ์ •๋ ฌ!
      • ๊ธฐ๋ณธ ์ •๋ ฌ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ธ๋ฐ, ๋งˆ์ด๋„ˆ์Šค๋ฅผ ๋ถ™์—ฌ์„œ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์Œ!
  • # ์˜์–ด, ์ˆ˜ํ•™ ์ˆœ์„œ๋กœ ํŠœํ”Œ ๋ฐ์ดํ„ฐ ์ €์žฅ scores = [ (80,100), (100,50), (70,100), (80,90), ] #1์ˆœ์œ„: ์˜์–ด ๋‚ด๋ฆผ์ฐจ์ˆœ -> ๋™์ ์ธ๊ฒŒ ์žˆ์œผ๋ฉด 2์ˆœ์œ„: ์ˆ˜ํ•™ ๋‚ด๋ฆผ์ฐจ์ˆœ **scores.sort(key=lambda x: (-x[0],-x[1]))** for s in scores: print(f"english={s[0]}, math={s[1]}")
  • ์ถ”๊ฐ€) ๋žŒ๋‹ค ํ•จ์ˆ˜ lambda ์ดํ•ดํ•˜๊ธฐ! : ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š” ์ •๋ ฌ์‹œ ์ฐธ๊ณ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€๋งŒ ๋ณด๊ธฐ ์œ„ํ•จ์ž„!sort(key=...) ํ•จ์ˆ˜์—์„œ key์— ์ „๋‹ฌํ•˜๋Š” ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š”์ •๋ ฌํ•  ๋•Œ๋งŒ ์ฐธ๊ณ ํ•˜๋Š” '์ž„์‹œ ๊ธฐ์ค€๊ฐ’'์„ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    1. ๊ธฐ์ค€ํ‘œ ์ž‘์„ฑ: ํŒŒ์ด์ฌ์ด ์ •๋ ฌํ•˜๊ธฐ ์ „์— ๊ฐ ์š”์†Œ ์˜†์— ํฌ์ŠคํŠธ์ž‡์„ ํ•˜๋‚˜์”ฉ ๋ถ™์ธ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”.
      • (80, 100) ์˜†์—๋Š” (-80, -100)์ด๋ผ๋Š” ํฌ์ŠคํŠธ์ž‡์„ ๋ถ™์ž…๋‹ˆ๋‹ค.
      • (100, 50) ์˜†์—๋Š” (-100, -50)์ด๋ผ๋Š” ํฌ์ŠคํŠธ์ž‡์„ ๋ถ™์ž…๋‹ˆ๋‹ค.
    2. ์ˆœ์„œ ์ •ํ•˜๊ธฐ: ํŒŒ์ด์ฌ์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ด ํฌ์ŠคํŠธ์ž‡์— ์ ํžŒ ์ˆซ์ž๋“ค์„ ๋น„๊ตํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ˆœ์„œ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.
      • 100์ด 80๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ, 100 ํฌ์ŠคํŠธ์ž‡์ด ๋ถ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ์•ž์œผ๋กœ ๊ฐ‘๋‹ˆ๋‹ค.
    3. ๊ฒฐ๊ณผ ์ถœ๋ ฅ: ์ˆœ์„œ๊ฐ€ ๋‹ค ์ •ํ•ด์ง€๋ฉด ํฌ์ŠคํŠธ์ž‡์€ ๋–ผ์–ด๋ฒ„๋ฆฌ๊ณ , ์›๋ž˜ ์žˆ๋˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ(100, 50 ๋“ฑ)๋งŒ ๋‚จ๊ฒจ์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

    ํŒŒ์ด์ฌ ๋‚ด๋ถ€์—์„œ sort๊ฐ€ ๋Œ์•„๊ฐˆ ๋•Œ์˜ ๋…ผ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:๊ฒฐ๊ตญ lambda ํ•จ์ˆ˜๋Š” "์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ค„ ์„ธ์šธ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ž ๊น ๊ณ„์‚ฐํ•ด ๋ณด๋Š” ์‹์ผ ๋ฟ, ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •(Modify)ํ•˜๋Š” ๋ช…๋ น์ด ์•„๋‹™๋‹ˆ๋‹ค!
  • </aside>
  • # ๋‚ด๋ถ€์ ์ธ ๊ฐ€์ƒ์˜ ๋™์ž‘ ๊ณผ์ • temp_keys = [] for x in scores: temp_keys.append((-x[0], -x[1])) # ์ •๋ ฌ์„ ์œ„ํ•œ "์ž„์‹œ ํ‚ค" ์ƒ์„ฑ # ์ด temp_keys๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ • (์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š์Œ) # ์ˆœ์„œ ๊ฒฐ์ • ์™„๋ฃŒ ํ›„ ๋ฆฌ์ŠคํŠธ ์žฌ๋ฐฐ์น˜`
  • ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๋น„์œ ๋กœ ์„ค๋ช…ํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค:
  • ์‹ค์ œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
  • <aside>

๋”•์…”๋„ˆ๋ฆฌ ๊ธฐ๋ฐ˜ ์ •๋ ฌ

  • ๋”•์…”๋„ˆ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹ : ๋ฐ์ดํ„ฐ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๊ตฌ์„ฑ ํ›„→ .sort() ๋‚˜ sorted() ์˜ key์ธ์ž์— lambda๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌ ๊ธฐ์ค€์„ ์ง€์ •
  • ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ํ•˜๋Š” ์ด์œ ?
  • ์ •๋ ฌ ๊ธฐ์ค€์„ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฌถ์œผ๋ฉด, ํ‚ค(key)์˜ ์ด๋ฆ„์œผ๋กœ ๊ฐ’์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์ •๋ ฌ ์ฝ”๋“œ๋ฅผ ๊ณ ์น  ํ•„์š”๊ฐ€ ์—†๋‹ค!
  • ์˜ˆ์‹œ - ์ˆ˜ํ•™ ์ ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, ๋™์ ์ธ๊ฒŒ ์žˆ์œผ๋ฉด ์˜์–ด ์ ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆ˜๋„ ๊ณ ๋ คํ•˜๋Š” ์ •๋ ฌ
    • socres.sort(key=lambda x: (-x[0], -x[1]))
      • key=lambda x:ํŠœํ”Œ์˜ ๊ฐ ์š”์†Œ๋ฅผ x ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ ,
      • ๊ทธ x๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ˜•ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ• ์ง€ ์ •ํ•ด์ค€๋‹ค!
      • → ์ •๋ ฌ ๊ธฐ์ค€์„ ์ปค์Šคํ…€(์‚ฌ์šฉ์ž ์ •์˜) ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ!
      • (-x[0], -x[1])-x[0] : ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ๋งˆ์ด๋„ˆ์Šค ๋ถ™์—ฌ์„œ ์ •๋ ฌ<aside>
        • ์˜์–ด๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(๋†’์€ ์ˆœ) → ์ˆ˜ํ•™์€ ์˜ค๋ฆ„์ฐจ์ˆœ(๋‚ฎ์€ ์ˆœ) ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
        • scores.sort(key=lambda x: (-x[0], x[1]))
        </aside>
      • -x[1] : ๋‘ ๋ฒˆ์งธ ์š”์†Œ์— ๋งˆ์ด๋„ˆ์Šค ๋ถ™์—ฌ์„œ ์ •๋ ฌ!
      • ๊ธฐ๋ณธ ์ •๋ ฌ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ธ๋ฐ, ๋งˆ์ด๋„ˆ์Šค๋ฅผ ๋ถ™์—ฌ์„œ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์Œ!
  • # ์˜์–ด, ์ˆ˜ํ•™ ์ˆœ์„œ๋กœ ํŠœํ”Œ ๋ฐ์ดํ„ฐ ์ €์žฅ scores = [ {'english':80, 'math':100 }, {'english':100 , 'math': 50}, {'english':70, 'math': 100}, {'english':80, 'math': 90}, ] #1์ˆœ์œ„: ์˜์–ด ๋‚ด๋ฆผ์ฐจ์ˆœ -> ๋™์ ์ธ๊ฒŒ ์žˆ์œผ๋ฉด 2์ˆœ์œ„: ์ˆ˜ํ•™ ๋‚ด๋ฆผ์ฐจ์ˆœ **scores.sort(key=lambda x: (-x['math'],-x['english']))** for s in scores: print(s)

๋‘ ์ •๋ ฌ ๋ฐฉ์‹์˜ ์ฐจ์ด

  • ์–ด๋–ค ์ƒํ™ฉ์— ํ™œ์šฉํ•˜๋Š”๊ฐ€?์งง๊ณ  ๊ฐ„๋‹จํ•ด์„œ ๋” ๋น ๋ฅด๋‹ค๋”•์„œ๋„ˆ๋ฆฌ ๊ธฐ๋ฐ˜ ์ •๋ ฌ: ๋ฐ์ดํ„ฐ์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์ •๋ ฌ ์ฝ”๋“œ๋ฅผ ๊ณ ์น  ํ•„์š”๊ฐ€ ์—†๋‹ค!
  • ๊ตฌ์กฐํ™”๋˜์–ด ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค
  • → ์กฐ๊ฑด์ด ๋งŽ์•„์ง€๋ฉด, ๋”•์…”๋„ˆ๋ฆฌ๋กœ ํ•ด์•ผ ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์Œ!
  • ํŠœํ”Œ ๊ธฐ๋ฐ˜ ์ •๋ ฌ: ์ ์€ ์กฐ๊ฑด์ผ ๋•Œ!, (๋‹จ์ˆœ ๊ณ„์‚ฐ์šฉ), ๋‹จ์ˆœ ์ž…๋ ฅ์ฒ˜๋ฆฌ ์ผ ๋•Œ!

6. ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ์ œ๋Œ€๋กœ ๋‹ค๋ฃจ๊ธฐ

  • ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ๋Š” ์–ด๋””์— ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? : ๊ทธ๋ž˜ํ”„์˜ ๊ตฌ์กฐ ํ‘œํ˜„ํŠนํžˆ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ,
  • ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ์˜ ์„ ์–ธ,๋ฐ์ดํ„ฐ ์ €์žฅ, ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ์‹œํ—˜์žฅ์—์„œ ๋‹นํ™ฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค!
  • → ์ฝ”ํ…Œ ๋ฌธ์ œ์—์„œ๋Š” ๊ทธ๋ž˜ํ”„ ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š”๋ฐ, ์ด ๋•Œ ๊ทธ๋ž˜ํ”„์˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ์ด๋‹ค!

์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

[Step 1. ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”]

ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค!

  • ๋ณดํ†ต ๋…ธ๋“œ ๋ฒˆํ˜ธ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ ํ•˜๋ฏ€๋กœ, ์ธ๋ฑ์Šค 0 ์‚ฌ์šฉx, N+1 ํฌ๊ธฐ๋กœ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค
  • # ์ •์ ์ด 3๊ฐœ ์žˆ๋‹ค๊ณ  ๊ฐ€์ • (1~3๋ฒˆ ์‚ฌ์šฉ!) N =3 **graph = [[] for _ in range(N+1)]**

→ ์ด๋ ‡๊ฒŒ ๋งŒ๋“  graph[1], graph[2], graph[3] ๊ฐ๊ฐ์ด ๊ฐ ์ •์ ์˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์—ญํ• ์„ ํ•œ๋‹ค!

[Step 2. ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ]

  • ๋ฌธ์ œ ์˜ˆ์‹œ) ์•„๋ž˜์˜ ๊ฐ„๋‹จํ•œ ๊ทธ๋ž˜ํ”„์— ์ž…๋ ฅ๊ฐ’ ์ €์žฅํ•˜๊ธฐ<aside>
    • ์™ผ์ชฝ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž…๋ ฅ๊ฐ’
    3 4 (→ ๋…ธ๋“œ๊ฐ€ 3๊ฐœ, ์—์ง€๊ฐ€ 4๊ฐœ์ธ ๊ทธ๋ž˜ํ”„)2 1 103 2 6
    • ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ €์žฅํ•˜๊ธฐ
      # ์ •์  ์ˆ˜์™€ ๊ฐ„์„  ์ˆ˜ ์ž…๋ ฅ
      N,E = map(int, input().split()) #์ •์ =3, E ๊ฐ„์„ (edge)=4
      
      # ๊ฐ„์„  ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ €์žฅ
      for _ in range(E): #์ €์žฅํ•  ์—์ง€์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต (1~4๊นŒ์ง€)
      	s,e,w = map(int,input().split())
      	**graph[s].append((e,w)) #์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ์— ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ ์ €์žฅ!	
      			# (e,w) ๋Š” (๋„์ฐฉ ๋…ธ๋“œ, ๊ฐ€์ค‘์น˜) ์ž„!**
      
    • ์—ฐ๊ฒฐ ์ •๋ณด๋Š” (๋„์ฐฉ ๋…ธ๋“œ, ๊ฐ€์ค‘์น˜) ํ˜•ํƒœ์˜ ํŠœํ”Œ๋กœ ์ €์žฅํ•œ๋‹ค
    • ์‹ค์ œ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•ํƒœ[1] → [2,4] [3,7][3] → [2,6]
    • [2] → [1,10]
    • [์‹œ์ž‘๋…ธ๋“œ] → [๋„์ฐฉ๋…ธ๋“œ, ๊ฐ€์ค‘์น˜] ํ˜•ํƒœ!
  • </aside>
  • 1 3 7
  • 1 2 4 ( 1๋ฒˆ ๋…ธ๋“œ์—์„œ 2๋ฒˆ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฐ€์ค‘์น˜ 4์˜ ์—์ง€๊ฐ€ ์žˆ์Œ )
  • flowchart LR 1 -- 7 --> 3 3 -- 6 --> 2 1 -- 4 --> 2 2 -- 10 --> 1

[Step 3. ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ]

  • 1๋ฒˆ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘๋˜๋Š” ์—์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ!์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด
  • [2,4] ๋ž‘ [3,7] ์˜ 2๊ฐœ์˜ ์—์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค
  • for nextNode, weight in graph[1]: print(f"next Node {nextNode}, weight= {weight}")

→ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์—์„œ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ ์ ˆํ•˜๊ฒŒ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ž!

 

 

 

 

 

 

 

 

'๐ŸŒŠ๋„์„œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring Security in Action] 1์žฅ  (0) 2024.11.14