Skip to content

potea/m_kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

m_kotlin

๋ฌธ์ œ1 - Simple Reactive System

๊ฐ„๋‹จํ•œ Reactive ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด๋ด…์‹œ๋‹ค.

Reactive Programing์€, ์–ด๋–ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ๊ทธ ๊ฐ’์„ ์ด์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์œผ๋กœ ์ƒํƒœ๊ฐ€ ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค. ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋ฉด, ์—‘์…€์˜ ์ˆ˜์‹์„ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์…€A์™€ ์…€B์— ์ •์ˆ˜๊ฐ’์ด ์žˆ์„ ๋•Œ, ์…€C๋Š” A+B๋ผ๋Š” ์ˆ˜์‹์˜ ๊ฒฐ๊ณผ๊ฐ’์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ด ๋•Œ, ์…€A์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด, ์…€ C์˜ ๊ฐ’์€ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋ฉด, ์ด๋ฒˆ ๊ธฐํšŒ์— Reactive์˜ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜์„ธ์š”.

https://en.wikipedia.org/wiki/Reactive_programming

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๊ณ , ์„ค๊ณ„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฌธ์ œ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ

ํ–‰์ด ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ์—‘์…€์„ ๊ฐ€์ •ํ•˜๋ฉด, ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ณด์ผ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ธ๋ฑ์Šค๋Š” ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๊ณ , A~Z ๊นŒ์ง€์ž…๋‹ˆ๋‹ค.

  1. ์ด ๋ฐฐ์—ด์€ ์ •์ˆ˜ ๋˜๋Š” ๋‘๊ฐœ์˜ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์‚ฌ์น™์—ฐ์‚ฐ ์ˆ˜์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. (+ - * /)
  2. ๊ฐ๊ฐ์˜ ์…€์€ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ˆ˜์‹์€ ๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ์žˆ๊ณ , ์•ŒํŒŒ๋ฒจ์œผ๋กœ๋œ ์ธ๋ฑ์Šค ๋˜๋Š” ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  4. ์ด ๋ฐฐ์—ด ๋‹ค์Œ์—๋Š” ์…€์˜ ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š”์ง€๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
  5. ์ˆœํ™˜์ฐธ์กฐ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (A๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ์ˆ˜์‹์—๋Š” A๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป)
  6. ๊ฐ’์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋‹ค๋ฉด(0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ ๋“ฑ) #err์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

100, 20, 3023, (A+E), 10, -30, (D+10), 0, 12345
A=>10
C=>(A*E)
E=>100

์ถœ๋ ฅ

์…€์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋งˆ๋‹ค, ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์…€์˜ ๋ณ€๊ฒฝ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

A=>10 : A=>10, D=>20, G=>30
C=>(A*E) : C=>100
E=>100 : E=>100, D=>110, G=>120, C=>1000

์ฃผ์˜์‚ฌํ•ญ

  • ๊ธฐ์กด์˜ Reactive ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Rx๋“ฑ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜์น™์ž…๋‹ˆ๋‹ค.
  • Reactive Programing์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•ด๋‚ผ ํ•„์š”๋Š” ์—†๊ณ , Propagation(์ „ํŒŒ)๋งŒ ์ œ๋Œ€๋กœ ๋˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

kwi์„ ์ž„๋‹˜์„ ์œ„ํ•œ ํŠน๋ณ„ ๋ฌธ์ œ

  1. ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์•ˆ๋“œ๋กœ์ด๋“œ GUI๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  2. Column์ด ํ•˜๋‚˜๋ฟ์ธ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.
  3. ์„ธ๋กœ RecyclerView๋กœ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ๋˜๊ฒ ์ฃ ? ๊ฑฐ๊ธฐ์— ์„ ํƒ๋œ ์…€์˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” EditText๊ฐ€ ์žˆ์œผ๋ฉด ๋˜๊ฒ ๋„ค์š”.
  4. Propagation์€ ์…€์— ์ง์ ‘ ๋ฐ˜์˜๋˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ2 - Simple Reactive System Extension

์ฒซ ๋ฌธ์ œ์ธ Simple Reactive System์„ ํ†ตํ•ด ์„œ๋กœ ๋น„์Šทํ•˜๊ฒŒ ๊ตฌํ˜„๋œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ Cell์ด๋ผ๋Š” ํด๋ž˜์Šค์˜€์Šต๋‹ˆ๋‹ค. ์…€์—์„œ ํ‘œํ˜„์‹์„ ํŒŒ์‹ฑํ•˜์—ฌ ์ด๊ฒƒ์ด ์ˆซ์ž์ธ์ง€, ์ˆ˜์‹์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ’ ๊ณ„์‚ฐ์— ํ™œ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ˆ˜์‹ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์—‘์…€ ์ฒ˜๋Ÿผ =Fun() ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•˜๋„๋ก ํ™•์žฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ฃ . ์ง€์›๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์ด์ „์ฒ˜๋Ÿผ isExpression๊ณผ ๊ฐ™์ด ํŠน์ • ์ˆ˜์‹์ž„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ์œ„ํ•œ ๋ณ€์ˆ˜๋“ค์„ ๊ณ„์† ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์กฐ๊ฑด๋ฌธ์ด ๋‚œ๋ฌดํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด ๋ณด์—ฌ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์–ด์งˆ ๊ฒ๋‹ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ๋‘๋ฒˆ์งธ ๋ฌธ์ œ ์ž…๋‹ˆ๋‹ค.

###Simple Reactive System ์ˆ˜์‹ ํ™•์žฅ ์ •์ˆ˜์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ์ œ๊ณตํ•˜๋˜ Simple Reactive System์— ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ˆ˜์‹๊ณ„์‚ฐ ๋ถ€๋ถ„์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ˆ˜์‹ ํƒ€์ž…์— ์•Œ๋งž๋Š” ํด๋ž˜์Šค๋“ค์„ ๊ตฌํ˜„ํ•˜์—ฌ ์œ„์™€ ๊ฐ™์ด ์ง€์ €๋ถ„ํ•ด์งˆ ๋ถ€๋ถ„๋“ค์„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ด…์‹œ๋‹ค.

###์ž…๋ ฅ & ์ถœ๋ ฅ

  • ๊ธฐ์กด ์ •์ˆ˜์™€ ์‚ฌ์น™์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๋™์ž‘์€ ๋ฌธ์ œ1๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ, ์ˆ˜์‹ ์ž…๋ ฅ์€ '='์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.(ํ•จ์ˆ˜ ์ž…๋ ฅ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งž์ถ”๋„๋ก ์ˆ˜์ •)
  • ์ˆ˜์‹ ์ž…๋ ฅ๋Œ€ํ•ด ๊ด„ํ˜ธ ๊ทœ์น™๋„ ํŽธ์˜์ƒ ์ œ๊ฑฐํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. =(A+E) ๋˜๋Š” =A+E ๋Š” ๊ฐ™์€๊ฒƒ์œผ๋กœ ๋ด„.
  • ์ถ”๊ฐ€๋˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž…๋ ฅ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • =SUM(A:Z) ํ•จ์ˆ˜์˜ ์‹œ์ž‘์€ '='๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ทธ๋’ค์— 'ํ•จ์ˆ˜๋ช…'๊ณผ '๋ฒ”์œ„'๊ฐ€ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ง€์›ํ•  ํ•จ์ˆ˜๋Š” SUM, AVERAGE, MAX, MIN ๋„ค๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„๋‚ด ๊ฐ’๋“ค์ค‘ ๋น„์–ด์žˆ๋Š” ์…€์€ ๊ฐ’์„ ๋ฌด์‹œํ•˜๊ณ  ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. (์‹ค์ œ ์—‘์…€์ฒ˜๋Ÿผ AVERAGE์˜ ๊ฒฝ์šฐ ๋‚˜๋ˆ„๋Š” ์ˆ˜์— ์นด์šดํŒ…์„ ํฌํ•จํ•˜์ง€ ์•Š์Œ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.)
=SUM(A:Z) : A๋ถ€ํ„ฐ Z์…€ ๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•จ
=AVERAGE(A:Z) : A๋ถ€ํ„ฐ Z์…€ ๊นŒ์ง€์˜ ํ‰๊ท ์„ ๊ตฌํ•จ
=MAX(A:Z) : A๋ถ€ํ„ฐ Z์…€ ๊ฐ’์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ตฌํ•จ
=MIN(A:Z) : A๋ถ€ํ„ฐ Z์…€ ๊ฐ’์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•จ
๋ฒ”์œ„ ์ œํ•œ : A๋ถ€ํ„ฐ Z์…€ ๊นŒ์ง€ ์ž…๋ ฅ ๊ฐ€๋Šฅ
(A:D), (C:Y), (E:F)์™€ ๊ฐ™์ด ๋ฒ”์œ„์˜ ์ตœ์†Œ๋Š” 2์…€์ด์ƒ์ด๋ฉฐ (A:A)์™€ ๊ฐ™์€ ์ผ€์ด์Šค๋Š” ์ง€์›๋˜์ง€ ์•Š์Œ. 
(C:A)์ฒ˜๋Ÿผ ์—ญ์œผ๋กœ ์ง€์ •๋œ ๋ฒ”์œ„๋Š” ์ž…๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค ๊ฐ€์ •

์„ ํƒ์‚ฌํ•ญ

๋ฌธ์ œ1์™€ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ์ด๋ฏ€๋กœ, ๋ฌธ์ œ1์˜ ๋ฏธ์™„์„ฑ์— ๋”ฐ๋ฅธ ํŒจ๋„ํ‹ฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ1์„ ๋งˆ์ € ์™„์„ฑํ•˜๊ณ  ๊ตฌํ˜„ํ•ด ๋ณด๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค์Œ์„ ์„ ํƒํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๊ธ‰์ ์ด๋ฉด ๋ฌธ์ œ1์˜ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด ๋ณด๋Š”๊ฒŒ ์ž…์ถœ๋ ฅ ํ…Œ์ŠคํŠธ ํ™•์ธ์— ์ข‹๊ฒ ์ฃ ~?

  • ํ’€์—ˆ๋˜ ๋ฌธ์ œ1 ์ฝ”๋“œ์— ์ถ”๊ฐ€ ๊ตฌํ˜„
  • ๋ฌธ์ œ2์— ํ•ด๋‹น๋˜๋Š” ์ˆ˜์‹ ํ™•์žฅ์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋งŒ ๊ตฌํ˜„

๋ฌธ์ œ3 - ๋กœ๋˜ ์ˆ˜์—ด

๋กœ๋˜ ๋ฒˆํ˜ธ๋“ค์„ ๋ณด๋˜๋„์ค‘ ์žฌ๋ฐŒ๋Š” ์ˆ˜์—ด์ด ์ƒ๊ฐ๋‚ฌ์Šต๋‹ˆ๋‹ค.
๋งคํšŒ ๋‹น์ฒจ๋ฒˆํ˜ธ์— ๋‹น์ฒจ์ž๋“ค์˜ ์ˆ˜๋ฅผ ๊ณฑํ•œ ๋ˆ„์ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
๋‹จ, ๋‹น์ฒจ์ž๊ฐ€ 0์ผ ๊ฒฝ์šฐ 1์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค.
์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ†ต๊ณ„๊ฐ’์ด ๊ฐ€์žฅ ๋†’์€ ์ˆ˜์—ด๊ณผ ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์—ด์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ, 7๋ฒˆ์งธ๋กœ ๋“ฑ์žฅํ•œ ์ˆซ์ž์˜ ํ†ต๊ณ„๊ฐ’์ด 8-10๋ฒˆ์งธ์™€ ๊ฐ™๋‹ค๋ฉด ๋ชจ๋‘ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹น์ฒจ๋ฒˆํ˜ธ๊ฐ€ 1,2,3,4,5,6,7 ์ผ๋•Œ 1๋“ฑ ์ˆ˜๊ฐ€ 8์ด๋ผ๋ฉด,
lottoCnt[1]+=8
lottoCnt[2]+=8
lottoCnt[3]+=8
lottoCnt[4]+=8
lottoCnt[5]+=8
lottoCnt[6]+=8
lottoCnt[7]+=8

1๋“ฑ์ˆ˜๊ฐ€ 0 ์ด๋ผ๋ฉด,
lottoCnt[1]++
lottoCnt[2]++
lottoCnt[3]++
lottoCnt[4]++
lottoCnt[5]++
lottoCnt[6]++
lottoCnt[7]++

API ๋ฌธ์„œ 
API LINK : http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=

example : http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=644

output : {"bnusNo":8,"firstWinamnt":1831451204,"totSellamnt":61846599000,"returnValue":"success","drwtNo3":17,"drwtNo2":13,"drwtNo1":5,"drwtNo6":36,"drwtNo5":28,"drwtNo4":23,"drwNoDate":"2015-04-04","drwNo":644,"firstPrzwnerCo":8}

์ œํ•œ

  • ๊ฐ€์žฅ ๊ฐ„๊ฒฐํ•œ ๋žŒ๋‹คํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • flatmap์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญํ•œ URL์˜ json ํ˜•์‹์€ ํŒŒ์‹ฑ์„ ํ†ตํ•ด map ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์ธ

fun main(args: Array<String>) {

    val lottoNumberSequence : lottoNumberSequence = LottoNumberSequence()
    lottoNumberSequence print MAX_EXPOSE // ์ตœ๋‹ค ๋…ธ์ถœ ์ˆซ์žํ˜•
    lottoNumberSequence print MIN_EXPOSE // ์ตœ์†Œ ๋…ธ์ถœ ์ˆซ์žํ˜•
}

์ถœ๋ ฅ

๋กœ๋˜ ์ˆ˜์—ด ์ถœ๋ ฅ ~ [์ตœ๋‹ค ๋…ธ์ถœ ๊ธฐ์ค€]
1. 1, 2, 3, 4, 5, 6, 7 
          .
          .
          .
          
=> ๋งˆ์ง€๋ง‰ ์ž๋ฆฟ์ˆ˜์˜ ์ˆซ์ž 7๊ณผ ์ˆซ์ž 10 ๋…ธ์ถœํšŸ์ˆ˜๊ฐ€ 200๋ฒˆ์œผ๋กœ ๊ฐ™์„๊ฒฝ์šฐ ์ถœ๋ ฅ
1. 1, 2, 3, 4, 5, 6, 7 
2. 1, 2, 3, 4, 5, 6, 10
          
 
๋กœ๋˜ ์ˆ˜์—ด ์ถœ๋ ฅ ~ [์ตœ์†Œ ๋…ธ์ถœ ๊ธฐ์ค€]
1. 15, 16, 17, 18, 19, 20, 21 
         .
         .
         .
 
=> ๋งˆ์ง€๋ง‰ ์ž๋ฆฟ์ˆ˜์˜ ์ˆซ์ž 21๊ณผ ์ˆซ์ž 22 ๋…ธ์ถœํšŸ์ˆ˜๊ฐ€ 63๋ฒˆ์œผ๋กœ ๊ฐ™์„๊ฒฝ์šฐ ์ถœ๋ ฅ
1. 15, 16, 17, 18, 19, 20, 21 
2. 15, 16, 17, 18, 19, 20, 22
         .
         .
         .

์„ ํƒ์‚ฌํ•ญ

API ์š”์ฒญ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„ ์†๋„๊ฐ€ ๋Š๋ฆฝ๋‹ˆ๋‹ค.
์ด๋ฅผ ๊ฐœ์„ ํ•ด๋ณด์„ธ์š”.

๋ฌธ์ œ4 - ํ•จ์ˆ˜ํ˜• ์—ฐ์Šต

ํ•จ์ˆ˜ํ˜• ์ž๋ฃŒํ˜•๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต์„ ํ•ฉ์‹œ๋‹ค.

๋ฌธ์ œ4-1 ๋กœ๋˜

๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. N๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋žœ๋ค ์ˆซ์ž๋ฅผ 1~M ๋ฒ”์œ„์—์„œ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

lotto(4, 10) // 1~10๊นŒ์ง€์˜ ์ˆซ์ž์ค‘์—์„œ 4๊ฐœ์˜ ๋žœ๋ค ์ˆซ์ž ์ถ”์ถœ
1, 2, 3, 4

๋ฌธ์ œ4-2

์ •๋ ฌ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์ •๋ ฌ ํ•จ์ˆ˜๋Š” ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์˜ ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. (๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ์˜ ๋ฌธ์ž ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.)

์ž…๋ ฅ๊ฐ’=> [['a', 'b', 'c'], ['d', 'e'],['f', 'g', 'h'], ['d', 'e'], ['i', 'j', 'k', 'l'], ['m', 'n'], ['o']]
์ •๋ ฌํ•˜๋ฉด => [['o'], ['d', 'e'], ['d', 'e'], ['m', 'n'], ['a', 'b', 'c'], ['f', 'g', 'h'], ['i', 'j', 'k', 'l']]

๋ฌธ์ œ4-3

์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ฒ”์œ„ ๋‚ด์— ์กด์žฌํ•˜๋Š” ์†Œ์ˆ˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ 7, ๋ 31
์ถœ๋ ฅ => [7, 11, 13, 17, 19, 23, 29, 31]

๋ฌธ์ œ4-4

N bit Gray code๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. https://en.wikipedia.org/wiki/Gray_code (๊ทธ๋ ˆ์ด ์ฝ”๋“œ๋Š” ํ•œ ๋น„ํŠธ์”ฉ ๋ฐ”๋€๋‹ˆ๋‹ค.)

GrayCode(1) = ["0", "1"]
GrayCode(2) = ["00", "01", "11", "10"]
GrayCode(3) = ["000", "001", "011", "010", "110", "111", "101", "100"]
GrayCode(N) = ??

๋ฌธ์ œ5 - ๊ฐœ๋ฏธ์ˆ˜์—ด

๊ฐœ๋ฏธ ์ˆ˜์—ด(ํ•œ๊ตญ์‹ Look and Say) (์ฐธ๊ณ  - https://ko.wikipedia.org/wiki/%EC%9D%BD%EA%B3%A0_%EB%A7%90%ED%95%98%EA%B8%B0_%EC%88%98%EC%97%B4)

๋ฌธ์ œ5-1

๋žŒ๋‹ค์‹์œผ๋กœ ํ’€๊ธฐ(n = 10)

๋ฌธ์ œ5-2

์ฝ”๋ฃจํ‹ด์„ ์ด์šฉํ•ด์„œ ํ’€๊ธฐ(n = 100) ์ฝ”๋ฃจํ‹ด์œผ๋กœ ํ’€๋ฉด ant(1000)๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

fun main(args: Array<String>) {
    ant(10)
}

output
11221131132111311231

๋ฌธ์ œ6 - Guess my number

์ด๋ฒˆ์—๋Š” ์ธ๊ณต์ง€๋Šฅ ๊ฒŒ์ž„์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค. ๊ฒŒ์ž„์˜ ๊ทœ์น™์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ 1~100์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ทธ๋Ÿฌ๋ฉด ์ปดํ“จํ„ฐ๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ž…๋ ฅํ•œ ์ˆซ์ž๋ฅผ ๋งž์ถฅ๋‹ˆ๋‹ค.

์ž…๋ ฅ

1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜

ex1) 90
ex2) 71

์ถœ๋ ฅ

๋”ฑ ํ•œ๋ฒˆ์— ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๋งž์ถœ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ์‹œ๋„ํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๋“œ๋””์–ด ์ฐพ๊ฒŒ๋˜๋ฉด !๋ฅผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ex1) 100 99 98 97 96 95 94 93 92 91 90!
ex2) 50 75 63 69 72 70 71!

๊ทœ์น™

  1. ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์ž…๋ ฅ๊ฐ’์„ ์ฐพ์•„๋„ ์ƒ๊ด€ ์—†์ง€๋งŒ, ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ๋‹จ, ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์„ฑ๋Šฅ์ด๋ผ๋ฉด, ์ฝ”๋“œ๊ฐ€ ์ œ์ผ ์งง์€ ์‚ฌ๋žŒ์ด 1๋“ฑ!

๋ฌธ์ œ7 - Josephus permutation

์›ํ˜•์œผ๋กœ n๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ๋™๊ทธ๋ž—๊ฒŒ ๋‘˜๋Ÿฌ ์•‰์•„ ์„œ๋ฐ”์ด๋ฒŒ ๊ฒŒ์ž„์„ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฐ”์ด๋ฒŒ ๊ฒŒ์ž„์ด ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฒซ๋ฒˆ์งธ ์‚ฌ๋žŒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด k๋ฒˆ์งธ์˜ ์‚ฌ๋žŒ์„ ์ด์œผ๋กœ ์˜์•„ ์ œ๊ฑฐ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ๊ฑฐ๋œ ์‚ฌ๋žŒ์˜ ๋‹ค์Œ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ k๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์˜์•„ ์ œ๊ฑฐ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ œ๊ฑฐ๋˜๋Š” ์‚ฌ๋žŒ ์ˆœ์„œ๋ฅผ ์ˆœ์—ด๋กœ ๋งŒ๋“ ๊ฒƒ์ด ์กฐ์„ธํ‘ธ์Šค(์š”์„ธํ‘ธ์Šค)์ˆœ์—ด ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. https://ko.wikipedia.org/wiki/%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4_%EB%AC%B8%EC%A0%9C

์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด

(n, k) ์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด์€ n๋ช…์˜ ์‚ฌ๋žŒ์ด ์žˆ๊ณ  k๋ฒˆ์งธ ๋งˆ๋‹ค์˜ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•ด ๋‚˜๊ฐ€๋Š” ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด (7, 3) ์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด์€ [3,6,2,7,5,1,4] ์ด๋ฉฐ. ๋งˆ์ง€๋ง‰์— ์ œ๊ฑฐ๋˜๋Š” ์‚ฌ๋žŒ์€ 4 ์ž…๋‹ˆ๋‹ค.

- ์•„๋ž˜๋Š” (7, 3) ์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด์˜ ์ƒ์„ฑ ์˜ˆ์‹œ ์ž…๋‹ˆ๋‹ค.

1,2,3,4,5,6,7
1๋ถ€ํ„ฐ ์‹œ์ž‘, ์„ธ๋ฒˆ์งธ์ธ 3 ์ œ๊ฑฐ
1,2,4,5,6,7
4๋ถ€ํ„ฐ ์‹œ์ž‘, 3๋ฒˆ์งธ์ธ 6 ์ œ๊ฑฐ
1,2,4,5,7
7๋ถ€ํ„ฐ ์‹œ์ž‘, 3๋ฒˆ์งธ์ธ 2 ์ œ๊ฑฐ
1,4,5,7
4๋ถ€ํ„ฐ ์‹œ์ž‘, 3๋ฒˆ์งธ์ธ 7 ์ œ๊ฑฐ
1,4,5
1๋ถ€ํ„ฐ ์‹œ์ž‘, 3๋ฒˆ์งธ์ธ 5 ์ œ๊ฑฐ
1,4
1๋ถ€ํ„ฐ ์‹œ์ž‘, 3๋ฒˆ์งธ์ธ 1 ์ œ๊ฑฐ
4
๋งˆ์ง€๋ง‰ 4 ์ œ๊ฑฐ
์ œ๊ฑฐ๋œ ์ˆœ์„œ์— ์˜ํ•œ ์ˆœ์—ด์€ [3,6,2,7,5,1,4] ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด ์ˆœ์„œ์— ๋”ฐ๋ผ ์–ด์งœํ”ผ ์ฃฝ๋Š”๊ฑฐ ๋‚ด๊ฐ€ ๋ช‡๋ฒˆ์งธ์— ์ฃฝ๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ๋žŒ์„ ์œ„ํ•ด ํŠน์ • ํƒ€๊ฒŸ(t)์ด ๋ช‡๋ฒˆ์งธ์— ์ œ๊ฑฐ๋˜๋Š”์ง€ ์•Œ์ˆ˜์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ด…์‹œ๋‹ค.

Josephus(n, k, t) : (n, k) ์กฐ์„ธํ‘ธ์Šค ์ˆœ์—ด์— ๋Œ€ํ•ด ํƒ€๊ฒŸ(t)์ด ๋ช‡๋ฒˆ์งธ์— ์ฃฝ๋Š”์ง€ ์ˆœ์„œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. 
์ถœ๋ ฅ : ์œ„์˜ ์˜ˆ์‹œ์—์„œ (7, 3, 2) ๋Š” 3์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์–‘์€ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด 3 < n, k, t <= 1000 ์œผ๋กœ ์ œํ•œ ํ•ฉ๋‹ˆ๋‹ค.


๋ฌธ์ œ8 - Android App

๋งค์ฃผ ๋กœ๋˜๋ฅผ ์‚ฌ๋Ÿฌ๊ฐ€๋Š” ํ€ด์„ ์€ ๋ฒˆํ˜ธ ์„ ํƒ์ด ๊ณ ๋ฏผ์ž…๋‹ˆ๋‹ค. ํ€ด์„ ์„ ์ž˜ ์ฑ™๊ฒจ์ฃผ๋Š” ํ›„์ž„์€ ๋ฌธ์ œ3์„ ํ†ตํ•ด์„œ ๋กœ๋˜ ์ˆ˜์—ด์„ ๋งŒ๋“ค๊ฒŒ ํ–ˆ๋„ค์š”. ๋งค๋ฒˆ ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค์„œ ์ˆซ์ž๋ฅผ ๋ฝ‘์€ ํ›„์— ๋กœ๋˜๋ฅผ ์‚ฌ๋Ÿฌ๊ฐˆ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐ๋‚ฌ์„๋•Œ ๋กœ๋˜ ์ˆ˜์—ด์„ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ํ€ด์„ ์„ ์œ„ํ•ด์„œ ๋กœ๋˜ ๋ฒˆํ˜ธ ์•ฑ์„ ๋งŒ๋“ค์–ด ์ค์‹œ๋‹ค.

  • ํ•„์ˆ˜
    • ๋งˆ์ง€๋ง‰ ๋‹น์ฒจ ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ3์˜ ๋กœ๋˜ ์ˆ˜์—ด ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ4-1์˜ ๋žœ๋ค ์ˆซ์ž ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ€ด์„ ์˜ ๋ฐ์ดํ„ฐ ๋น„์šฉ์„ ์•„๊ปด์ค„ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ถŒ์žฅ
    • ํ€ด์„ ์ด ์–ผ๋งˆ๋‚˜ ์•ฑ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
    • ํ† ์š”์ผ์ด ๋˜๊ธฐ ์ „์— ๋กœ๋˜๋ฅผ ์‚ฌ๋„๋ก ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Releases

No releases published

Packages

No packages published