JavaRush /Java Blog /Random-KO /Java์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์™€ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 1 ๋ถ€

Java์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์™€ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 1 ๋ถ€

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ด ๊ธ€์€ ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธ€์ธ๊ฐ€์š”?
  • ์ด๋ฏธ Java Core๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ Java์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์— ๋Œ€ํ•ด์„œ๋Š” ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ๋žŒ๋‹ค์— ๋Œ€ํ•ด ๋“ค์–ด๋ดค์ง€๋งŒ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์–ด๋Š ์ •๋„ ์ดํ•ดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‘๋ ต๊ณ  ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฒ”์ฃผ ์ค‘ ํ•˜๋‚˜์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด ๊ธฐ์‚ฌ๊ฐ€ ์ง€๋ฃจํ•˜๊ณ  ๋ถ€์ •ํ™•ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ "๋ฉ‹์ง€์ง€ ์•Š๋‹ค"๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€์‹œ๊ฑฐ๋‚˜, ํ•ด๋‹น ์ฃผ์ œ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด ๋Œ“๊ธ€์—์„œ ๊ธฐ์‚ฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•ด ์ฃผ์„ธ์š”. ์ด ์ž๋ฃŒ๋Š” ํ•™๋ฌธ์  ๊ฐ€์น˜๋ฅผ ์ฃผ์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ฐธ์‹ ํ•จ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๊ทธ ๋ฐ˜๋Œ€๋กœ, ๋ณต์žกํ•œ ๊ฒƒ(์ผ๋ถ€์—๊ฒŒ๋Š”)์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ API์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์— ์˜๊ฐ์„ ๋ฐ›์•„ ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ๊ณ  ๋žŒ๋‹ค ํ‘œํ˜„์„ ์ดํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด "์ŠคํŠธ๋ฆผ"์— ๋Œ€ํ•œ ๋‚˜์˜ ์˜ˆ ์ค‘ ์ผ๋ถ€๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋žŒ๋‹ค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Java์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.  ์˜ˆ์ œ์™€ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.  ํŒŒํŠธ 1 - 1์ด ๊ธฐ์‚ฌ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์–ด๋–ค ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?
  1. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ดํ•˜ OOP)์— ๋Œ€ํ•œ ์ดํ•ด, ์ฆ‰:
    • ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์ด๋“ค ์‚ฌ์ด์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ง€์‹
    • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€, ํด๋ž˜์Šค์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€, ์ธํ„ฐํŽ˜์ด์Šค(์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค) ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ง€์‹
    • ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœํ•˜๋Š”์ง€, ์ถ”์ƒ ๋ฉ”์†Œ๋“œ(๋˜๋Š” ๊ตฌํ˜„์ด ์—†๋Š” ๋ฉ”์†Œ๋“œ)๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜/์ธ์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ฑฐ๊ธฐ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์‹
    • ์•ก์„ธ์Šค ์ˆ˜์ •์ž, ์ •์  ๋ฉ”์„œ๋“œ/๋ณ€์ˆ˜, ์ตœ์ข… ๋ฉ”์„œ๋“œ/๋ณ€์ˆ˜;
    • ์ƒ์†(ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹ค์ค‘ ์ƒ์†).
  2. Java Core์— ๋Œ€ํ•œ ์ง€์‹: ์ œ๋„ค๋ฆญ, ์ปฌ๋ ‰์…˜(๋ชฉ๋ก), ์Šค๋ ˆ๋“œ.
์ž, ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์—ญ์‚ฌ

๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ˆ˜ํ•™์—์„œ Java๋กœ ์™”์Šต๋‹ˆ๋‹ค. 20 ์„ธ๊ธฐ ์ค‘๋ฐ˜ ๋ฏธ๊ตญ์˜ ํŠน์ • Alonzo Church๋Š” ์ˆ˜ํ•™๊ณผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ถ”์ƒํ™”๋ฅผ ๋งค์šฐ ์ข‹์•„ํ•˜๋Š” Princeton University์—์„œ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค ๋ฏธ์ ๋ถ„ํ•™์„ ์ƒ๊ฐํ•ด๋‚ธ ์‚ฌ๋žŒ์€ ์•Œ๋ก ์กฐ ์ฒ˜์น˜(Alonzo Church)์˜€์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค ๋ฏธ์ ๋ถ„ํ•™์€ ์ฒ˜์Œ์—๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๋ จ์ด ์—†๋Š” ์ถ”์ƒ์ ์ธ ์•„์ด๋””์–ด ์ง‘ํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์•จ๋Ÿฐ ํŠœ๋ง(Alan Turing)๊ณผ ์กด ํฐ ๋…ธ์ด๋งŒ(John von Neumann)๊ณผ ๊ฐ™์€ ์ˆ˜ํ•™์ž๋“ค๋„ ๊ฐ™์€ ํ”„๋ฆฐ์Šคํ„ด ๋Œ€ํ•™๊ต์—์„œ ๊ทผ๋ฌดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์กŒ์Šต๋‹ˆ๋‹ค. Church๋Š” ๋žŒ๋‹ค ๋ฏธ์ ๋ถ„ํ•™ ์‹œ์Šคํ…œ์„ ์ƒ๊ฐํ•ด ๋ƒˆ๊ณ  Turing์€ ํ˜„์žฌ "Turing machine"์œผ๋กœ ์•Œ๋ ค์ง„ ์ถ”์ƒ ์ปดํ“จํŒ… ๊ธฐ๊ณ„๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํฐ ๋…ธ์ด๋งŒ์€ ํ˜„๋Œ€ ์ปดํ“จํ„ฐ์˜ ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•œ ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ๋Š” "ํฐ ๋…ธ์ด๋งŒ ์•„ํ‚คํ…์ฒ˜"๋ผ๊ณ  ํ•จ). ๋‹น์‹œ Alonzo Church์˜ ์•„์ด๋””์–ด๋Š” ๋™๋ฃŒ์˜ ์ž‘์—…๋งŒํผ ๋ช…์„ฑ์„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค ( "์ˆœ์ˆ˜"์ˆ˜ํ•™ ๋ถ„์•ผ ์ œ์™ธ). ๊ทธ๋Ÿฌ๋‚˜ ์กฐ๊ธˆ ํ›„์— ํŠน์ • John McCarthy (๋˜ํ•œ ์ด์•ผ๊ธฐ โ€‹โ€‹๋‹น์‹œ ํ”„๋ฆฐ์Šคํ„ด ๋Œ€ํ•™์„ ์กธ์—…ํ–ˆ์œผ๋ฉฐ ๋งค์‚ฌ์ถ”์„ธ์ธ  ๊ณต๊ณผ ๋Œ€ํ•™์˜ ์ง์›)๊ฐ€ Church์˜ ์•„์ด๋””์–ด์— ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 1958๋…„์— ๊ทธ๋Š” ์ตœ์ดˆ์˜ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Lisp๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  58๋…„ ํ›„, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์•„์ด๋””์–ด๊ฐ€ 8๋ฒˆ์งธ๋กœ ์ž๋ฐ”์— ์œ ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 70๋…„๋„ ์ฑ„ ์ง€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค... ์‚ฌ์‹ค ์ˆ˜ํ•™์  ์•„์ด๋””์–ด๋ฅผ ์‹ค์ œ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐ์—๋Š” ์ด๊ฒƒ์ด ๊ฐ€์žฅ ๊ธด ์‹œ๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ณธ์งˆ

๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ๊ทธ๋Ÿฌํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ Java์˜ ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ค, ์ˆซ์ž, ๋ฌธ์ž์—ด, ๊ณ ์–‘์ด๋ฅผ ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ์—๋„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค! ์–ธ์ œ ์ด๊ฒƒ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝœ๋ฐฑ์„ ์ „๋‹ฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ „๋‹ฌํ•˜๋Š” ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ์ฝœ๋ฐฑ์„ ์ „์†กํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ฝœ๋ฐฑ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝœ๋ฐฑ์„ ๋ฐ›์•„๋“ค์ด๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ด๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋Š” ์ •๋ ฌ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊นŒ๋‹ค๋กœ์šด ์ •๋ ฌ์„ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public void mySuperSort() {
    // ... do something here
    if(compare(obj1, obj2) > 0)
    // ... and here we do something
}
์—ฌ๊ธฐ์„œ if์šฐ๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  compare()๋น„๊ตํ•˜๋Š” ๋‘ ๊ฐœ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์ด ๊ฐœ์ฒด ์ค‘ ์–ด๋Š ๊ฒƒ์ด "๋” ํฐ์ง€" ์•Œ์•„๋‚ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. "๋” ์ž‘์€" ๊ฒƒ ์•ž์— "๋” ๋งŽ์€" ๊ฒƒ์„ ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ๋„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— "more"๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ "more"๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋” ์ž‘์€ ๊ฐœ์ฒด๊ฐ€ ๋˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.) . ์ •ํ™•ํžˆ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ๋“  ์ด๋ฅผ mySuperSort(). ์ด ๊ฒฝ์šฐ, ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋™์•ˆ ์–ด๋–ป๊ฒŒ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ "์ œ์–ด"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์˜ค๋ฆ„์ฐจ์ˆœ๊ณผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” mySuperSortAsc()๋‘ ๊ฐ€์ง€ ๋ณ„๋„์˜ ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mySuperSortDesc()๋˜๋Š” ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์ผ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: booleanif true, ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, if false๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ). ํ•˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ๋ฐฐ์—ด ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์šฐ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” mySuperSort()์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์ด์ฆˆ์— ๋งž์ถฐ? ์ด ๋‹จ์–ด ๊ธธ์ด๋กœ? ์•„๋งˆ๋„ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์— ๋”ฐ๋ผ ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ๋ ๊นŒ์š”? ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ฐฐ์—ด ๋ชฉ๋ก์„ ์ •๋ ฌํ•ด์•ผ ํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์— ์žˆ๋Š” ๋‹จ์–ด์˜ ์ „์ฒด ๊ธธ์ด์— ๋”ฐ๋ผ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋น„๊ต๊ธฐ์— ๋Œ€ํ•ด ์ด๋ฏธ ๋“ค์–ด๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋น„๊ต๊ธฐ ๊ฐœ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ •๋ ฌ ๊ทœ์น™์„ ์„ค๋ช…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋ฐฉ๋ฒ•์€ ๊ณผ sort()๋™์ผํ•œ ์›๋ฆฌ๋กœ ๊ตฌํ˜„๋˜๋ฏ€๋กœ mySuperSort()์˜ˆ์ œ์—์„œ๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค sort().
String[] array1 = {"Mother", "soap", "frame"};
String[] array2 = {"I", "Very", "I love", "java"};
String[] array3 = {"world", "work", "May"};

List<String[]> arrays = new ArrayList<>();
arrays.add(array1);
arrays.add(array2);
arrays.add(array3);

Comparator<String[]> sortByLength = new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
};

Comparator<String[]> sortByWordsLength = new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        int length1 = 0;
        int length2 = 0;
        for (String s : o1) {
            length1 += s.length();
        }
        for (String s : o2) {
            length2 += s.length();
        }
        return length1 - length2;
    }
};

arrays.sort(sortByLength);
๊ฒฐ๊ณผ:
  1. ์—„๋งˆ๊ฐ€ ์•ก์ž๋ฅผ ์”ป์–ด์„œ
  2. ํ‰ํ™” ๋…ธ๋™์€
  3. ๋‚˜๋Š” ์ž๋ฐ”๋ฅผ ์ •๋ง ์ข‹์•„ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐฐ์—ด์€ ๊ฐ ๋ฐฐ์—ด์˜ ๋‹จ์–ด ์ˆ˜์— ๋”ฐ๋ผ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์–ด ์ˆ˜๊ฐ€ ์ ์€ ๋ฐฐ์—ด์€ "๋” ์ž‘์€" ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์— ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋‹จ์–ด๊ฐ€ ๋” ๋งŽ์€ ๋‹จ์–ด๋Š” "๋” ๋งŽ์€" ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋งˆ์ง€๋ง‰์— ๋๋‚ฉ๋‹ˆ๋‹ค. sort()๋ฉ”์†Œ๋“œ์— ๋‹ค๋ฅธ ๋น„๊ต๊ธฐ๋ฅผ ์ „๋‹ฌ ํ•˜๋ฉด (sortByWordsLength)๊ฒฐ๊ณผ ๋Š” ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  1. ํ‰ํ™” ๋…ธ๋™์€
  2. ์—„๋งˆ๊ฐ€ ์•ก์ž๋ฅผ ์”ป์–ด์„œ
  3. ๋‚˜๋Š” ์ž๋ฐ”๋ฅผ ์ •๋ง ์ข‹์•„ํ•œ๋‹ค.
์ด์ œ ๋ฐฐ์—ด์€ ํ•ด๋‹น ๋ฐฐ์—ด ๋‹จ์–ด์˜ ์ด ๋ฌธ์ž ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” 10๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ , ๋‘ ๋ฒˆ์งธ์—๋Š” 12๊ฐœ, ์„ธ ๋ฒˆ์งธ์—๋Š” 15๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋น„๊ต๊ธฐ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฉฐ ๊ฐ„๋‹จํžˆ ์ต๋ช… ํด๋ž˜์Šค์˜ ๊ฐœ์ฒด๋ฅผ ๋ฐ”๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค sort(). ๊ทธ๋ ‡๊ฒŒ:
String[] array1 = {"Mother", "soap", "frame"};
String[] array2 = {"I", "Very", "I love", "java"};
String[] array3 = {"world", "work", "May"};

List<String[]> arrays = new ArrayList<>();
arrays.add(array1);
arrays.add(array2);
arrays.add(array3);

arrays.sort(new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
});
๊ฒฐ๊ณผ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… 1 . ๋ฐฐ์—ด์˜ ๋‹จ์–ด ์ˆ˜์— ๋”ฐ๋ผ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋„๋ก ์ด ์˜ˆ์ œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ ํ•„์š”ํ•œ ๊ฒƒ์— ๋”ฐ๋ผ ์ด ๊ฐ์ฒด ๋˜๋Š” ์ € ๊ฐ์ฒด๋ฅผ ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ๊ตฌํ˜„์„ ์ž‘์„ฑํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. . ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์ด ๊ทธ๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋žŒ๋‹ค๋Š” ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ๊ฐ์ฒด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ๋ž˜ํ•‘๋œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ํŠน์ดํ•œ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค). ์ด ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
arrays.sort(new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
});
์—ฌ๊ธฐ์„œ๋Š” ๋ชฉ๋ก์„ ๊ฐ€์ ธ์™€ arraysํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค sort(). ์—ฌ๊ธฐ์„œ๋Š” ํ•˜๋‚˜์˜ ๋‹จ์ผ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š” ๋น„๊ต๊ธฐ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค compare()(์ด ๊ฐ์ฒด์— ์œ ์ผํ•œ ๋ฉ”์†Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋†“์น˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ์— ์ž‘์—…ํ•  ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. IntelliJ IDEA ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํฌ๊ฒŒ ๋‹จ์ถ•๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
arrays.sort((o1, o2) -> o1.length - o2.length);
์ด๋ ‡๊ฒŒ ์—ฌ์„ฏ ์ค„์ด ํ•˜๋‚˜์˜ ์งง์€ ์ค„๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. 6์ค„์„ ์งง๊ฒŒ 1์ค„๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€๊ฐ€ ์‚ฌ๋ผ์กŒ์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋ฌด๊ฒƒ๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š์•˜์Œ์„ ๋ณด์žฅํ•˜๋ฉฐ ์ด ์ฝ”๋“œ๋Š” ์ต๋ช… ํด๋ž˜์Šค์™€ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… 2 . ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ 1์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ IntelliJ IDEA ์— ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ๋žŒ๋‹ค๋กœ ์ „ํ™˜ํ•˜๋„๋ก ์š”์ฒญํ•˜์„ธ์š”.

์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด์ž

๊ธฐ๋ณธ์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ ๋ชฉ๋ก์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•  ๋•Œ, ์ธํ„ฐํŽ˜์ด์Šค์— ๋‚˜์—ด๋œ ๋ฉ”์†Œ๋“œ์˜ ๊ตฌํ˜„์„ ํด๋ž˜์Šค์— ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค). ). ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ(์˜ˆ: List๋™์ผํ•œ Comparator ๋˜๋Š” Runnable)๊ฐ€ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๊ณ , ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ์ธํ„ฐํŽ˜์ด์Šค(์†Œ์œ„ ๋งˆ์ปค ์ธํ„ฐํŽ˜์ด์Šค, ์˜ˆ๋ฅผ ๋“ค์–ด ์ง๋ ฌํ™” ๊ฐ€๋Šฅ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค . Java 8์—์„œ๋Š” ํŠน๋ณ„ํ•œ @FunctionalInterface ์ฃผ์„ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค . ๋žŒ๋‹ค ์‹์— ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๋‹จ์ผ ๋ฉ”์„œ๋“œ์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ๊ฐ์ฒด์— ๋ž˜ํ•‘๋œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ์–ด๋”˜๊ฐ€์— ์ „๋‹ฌํ•  ๋•Œ ์‹ค์ œ๋กœ๋Š” ์ด ๋‹จ์ผ ๋ฉ”์„œ๋“œ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋ฌด์—‡์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”์ง€๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ์‹ค์ œ๋กœ ๋ฉ”์„œ๋“œ ์ฝ”๋“œ ์ž์ฒด์ž…๋‹ˆ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„. ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์— ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋žŒ๋‹ค ์‹์ด ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ต๋ช… ํด๋ž˜์Šค ๋˜๋Š” ์ผ๋ฐ˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋žŒ๋‹ค๋ฅผ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. :)

ํ†ต์‚ฌ๋ก 

์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
(ะฟะฐั€ะฐะผะตั‚ั€ั‹) -> {ั‚ะตะปะพ ะผะตั‚ะพะดะฐ}
์ฆ‰, ๊ด„ํ˜ธ ์•ˆ์—๋Š” ๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ "ํ™”์‚ดํ‘œ"(์—ฐ์†๋œ ๋‘ ๋ฌธ์ž: ๋นผ๊ธฐ ๋ฐ ํผ)๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ทธ ๋’ค์— ๋ฉ”์†Œ๋“œ์˜ ๋ณธ๋ฌธ์€ ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์ค‘๊ด„ํ˜ธ ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค์— ์ง€์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ์œ ํ˜•์ด ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์œ ํ˜•์ด ์ง€์ •๋˜๋ฏ€๋กœ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค List) ๋ณ€์ˆ˜์˜ ์œ ํ˜•์€ String[]ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์“ฐ์—ฌ์ง„๋‹ค.
ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์œ ํ˜•์„ ์ง€์ •ํ•˜๋ฉด IDEA๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•ด๋‹น ์œ ํ˜•์„ ํšŒ์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด Oracle ํŠœํ† ๋ฆฌ์–ผ ์—์„œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด๊ฒƒ์„ "ํƒ€๊ฒŸ ํƒ€์ดํ•‘" ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค . ๋ณ€์ˆ˜์— ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ธํ„ฐํŽ˜์ด์Šค์— ์ง€์ •๋œ ์ด๋ฆ„์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๊ด„ํ˜ธ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ด„ํ˜ธ ์—†์ด ๋ณ€์ˆ˜ ์ด๋ฆ„๋งŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋žŒ๋‹ค ํ‘œํ˜„์‹ ์ž์ฒด์˜ ๋ณธ๋ฌธ์— ๋Œ€ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ ์•ˆ์— ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ (ifs ๋ฐ ๋ฃจํ”„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ) ์ค‘๊ด„ํ˜ธ๋ฅผ ์ „ํ˜€ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๋ณธ๋ฌธ์ด ํ•œ ์ค„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด return์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ช…์‹œ์ ์œผ๋กœ return.

์˜ˆ

์˜ˆ์‹œ 1.
() -> {}
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์˜๋ฏธ ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :) ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ 2.
() -> ""
๋˜ํ•œ ํฅ๋ฏธ๋กœ์šด ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š๊ณ  ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค( return๋ถˆํ•„์š”ํ•˜๋ฏ€๋กœ ์ƒ๋žต๋จ). ๋™์ผํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค return.
() -> {
    return "";
}
์˜ˆ 3. ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•œ Hello World
() -> System.out.println("Hello world!")
์•„๋ฌด๊ฒƒ๋„ ๋ฐ›์ง€ ์•Š๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค( ๋ฉ”์†Œ๋“œ์˜ ๋ฐ˜ํ™˜ ์œ ํ˜•์ด ๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ๋น„๋ฌธ์„ ํ‘œ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— returnํ˜ธ์ถœ ์•ž์— ๋„ฃ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค . ๋™์ผํ•œ ์˜ˆ๊ฐ€ ๋” ์™„์ „ํ•ฉ๋‹ˆ๋‹ค. System.out.println()println() โ€” void)Runnable
public class Main {
    public static void main(String[] args) {
        new Thread(() -> System.out.println("Hello world!")).start();
    }
}
๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(() -> System.out.println("Hello world!"));
        t.start();
    }
}
๋˜๋Š” ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์œ ํ˜•์˜ ๊ฐ์ฒด๋กœ ์ €์žฅํ•œ Runnable๋‹ค์Œ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค threadโ€™ะฐ.
public class Main {
    public static void main(String[] args) {
        Runnable runnable = () -> System.out.println("Hello world!");
        Thread t = new Thread(runnable);
        t.start();
    }
}
๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ์ˆœ๊ฐ„์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” Runnable๊ฐ์ฒด์— ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค public void run(). ์ธํ„ฐํŽ˜์ด์Šค์— ๋”ฐ๋ฅด๋ฉด run ๋ฉ”์†Œ๋“œ๋Š” ์–ด๋–ค ๊ฒƒ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (void). ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ฐ›์•„๋“ค์ด๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. run()์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ์™€ ๋งค์šฐ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค Runnable. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์™€ ๊ฐ™์€ ๋ณ€์ˆ˜์— ๋„ฃ์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ ์ž…๋‹ˆ๋‹ค Runnable. ์‹ค์‹œ์˜ˆ 4
() -> 42
๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์•„๋ฌด๊ฒƒ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆซ์ž 42๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” Callable๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋งŒ ์ •์˜ํ•˜๋ฏ€๋กœ ์ด ๋žŒ๋‹ค ์‹์€ ์œ ํ˜•์˜ ๋ณ€์ˆ˜์— ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
V call(),
๋ฐ˜ํ™˜ ๊ฐ’์˜ ์œ ํ˜•์€ ์–ด๋””์— V์žˆ์Šต๋‹ˆ๊นŒ(์ด ๊ฒฝ์šฐ int). ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Callable<Integer> c = () -> 42;
์˜ˆ 5. ์—ฌ๋Ÿฌ ์ค„์˜ ๋žŒ๋‹ค
() -> {
    String[] helloWorld = {"Hello", "world!"};
    System.out.println(helloWorld[0]);
    System.out.println(helloWorld[1]);
}
๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ์œ ํ˜•์ด ์—†๋Š” ๋žŒ๋‹ค ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค void( ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค return). ์‹ค์‹œ์˜ˆ 6
x -> x
์—ฌ๊ธฐ์„œ๋Š” ๋ณ€์ˆ˜์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€์ ธ ั…์™€์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋งŒ ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฃผ์œ„์— ๊ด„ํ˜ธ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋™์ผํ•˜์ง€๋งŒ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
(x) -> x
๋‹ค์Œ์€ ๋ช…์‹œ์ ์ธ ์˜ต์…˜์ด ์žˆ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค return.
x -> {
    return x;
}
๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ์™€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค return.
(x) -> {
    return x;
}
๋˜๋Š” ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
(int x) -> x
์‹ค์‹œ์˜ˆ 7
x -> ++x
์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์ˆ˜๋ฝ ั…ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๊ทธ 1์ด์ƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
x -> x + 1
๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ ๋ณธ๋ฌธ ๋ฐ ๋‹จ์–ด ์ฃผ์œ„์— ๊ด„ํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค return. ์ด๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ์™€ return์ด ํฌํ•จ๋œ ์˜ต์…˜์€ ์˜ˆ์ œ 6์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ 8
(x, y) -> x % y
์šฐ๋ฆฌ๋Š” ์ผ๋ถ€๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ั…, ัƒ๋‚˜๋ˆ—์…ˆ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ x๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค y. ์—ฌ๊ธฐ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฃผ์œ„์— ๊ด„ํ˜ธ๊ฐ€ ์ด๋ฏธ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
(double x, int y) -> x % y
์‹ค์‹œ์˜ˆ 9
(Cat cat, String name, int age) -> {
    cat.setName(name);
    cat.setAge(age);
}
์ด๋ฆ„๊ณผ ์ •์ˆ˜ ๋‚˜์ด๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์ธ Cat ๊ฐœ์ฒด๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ์ž์ฒด์—์„œ๋Š” ์ „๋‹ฌ๋œ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ Cat์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋Š” cat์ฐธ์กฐ ์œ ํ˜•์ด๋ฏ€๋กœ ๋žŒ๋‹ค ์‹ ์™ธ๋ถ€์˜ Cat ๊ฐœ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค(๋‚ด๋ถ€๋กœ ์ „๋‹ฌ๋œ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค). ์œ ์‚ฌํ•œ ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•œ ๋ฒ„์ „:
public class Main {
    public static void main(String[] args) {
        // create a cat and print to the screen to make sure it's "blank"
        Cat myCat = new Cat();
        System.out.println(myCat);

        // create lambda
        Settable<Cat> s = (obj, name, age) -> {
            obj.setName(name);
            obj.setAge(age);
        };

        // call the method, to which we pass the cat and the lambda
        changeEntity(myCat, s);
        // display on the screen and see that the state of the cat has changed (has a name and age)
        System.out.println(myCat);
    }

    private static <T extends WithNameAndAge>  void changeEntity(T entity, Settable<T> s) {
        s.set(entity, "Murzik", 3);
    }
}

interface WithNameAndAge {
    void setName(String name);
    void setAge(int age);
}

interface Settable<C extends WithNameAndAge> {
    void set(C entity, String name, int age);
}

class Cat implements WithNameAndAge {
    private String name;
    private int age;

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
๊ฒฐ๊ณผ: Cat{name='null', age=0} Cat{name='Murzik', age=3} ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ฒ˜์Œ์—๋Š” Cat ๊ฐœ์ฒด์˜ ์ƒํƒœ๊ฐ€ ํ•˜๋‚˜์˜€์ง€๋งŒ ๋žŒ๋‹ค ์‹์„ ์‚ฌ์šฉํ•œ ํ›„์—๋Š” ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. . ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ์ œ๋„ค๋ฆญ๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Dog์˜ˆ๋ฅผ ๋“ค์–ด ์„ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ WithNameAndAge๋ฉ”์„œ๋“œ์—์„œ main()๋žŒ๋‹ค ์‹ ์ž์ฒด๋ฅผ ์ „ํ˜€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ Dog๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… 3 . ์ˆซ์ž๋ฅผ ๋ฐ›์•„์„œ ๋ถ€์šธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”. true์ „๋‹ฌ๋œ ์ˆซ์ž๊ฐ€ ๋‚˜๋จธ์ง€ ์—†์ด 13์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค ์‹ ํ˜•์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค . ์ž‘์—… 4 . ๋‘ ๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๊ฐ€์ ธ์™€ ๋™์ผํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”. ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค ํ˜•์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… 5 . ์„ธ ๊ฐœ์˜ ๋ถ„์ˆ˜( a, b, ) ๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  c๋™์ผํ•œ ๋ถ„์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”. ํŒ๋ณ„์‹์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค ์‹ ํ˜•์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์žŠ์–ด๋ฒ„๋ฆฐ ์‚ฌ๋žŒ์€ D = b^2 - 4ac ์ž…๋‹ˆ๋‹ค . ์ž‘์—… 6 . ์ž‘์—… 5์˜ ๊ธฐ๋Šฅ์  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค ์‹์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค a * b^c. Java์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์™€ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 2 ๋ถ€.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION