05
24

์‚ฌ์šฉ์ž ์ด๋ฆ„ + "์ด/๊ฐ€" ๊ฐ€ ์™€์•ผ๋˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ๋‹ค.

์˜๋ฌธ์ด๋‚˜ ๊ธฐํ˜ธ๋กœ ์ด๋ฆ„์ด ๋๋‚˜๋ฉด ๊ทธ๋ƒฅ "๊ฐ€"๋ฅผ ๋ถ™์ด๋ฉด ๋˜๋Š”๋ฐ, ํ•œ๊ธ€์ด๋ผ๋ฉด ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊ฐ€ ์–ด๋–ค ๊ฒƒ์ด๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

  • ์‚ฌ๋žŒ+์ด
  • ๊ท€์š”๋ฏธ+๊ฐ€

์ข…์„ฑ์ด ์กด์žฌํ•œ๋‹ค๋ฉด "์ด" ๊ฐ€ ๋ถ™๋Š” ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.

https://github.com/intotherealworld/jamo

 

GitHub - intotherealworld/jamo: ์œ ๋‹ˆ์ฝ”๋“œ ํ•œ๊ธ€ ์ดˆ/์ค‘/์ข…์„ฑ ์ž์†Œ ๋ถ„๋ฆฌ ๋ฐฉ๋ฒ• ์„ค๋ช… ๋ฐ ์ฝ”๋“œ (Java, Kotlin, JavaScr

์œ ๋‹ˆ์ฝ”๋“œ ํ•œ๊ธ€ ์ดˆ/์ค‘/์ข…์„ฑ ์ž์†Œ ๋ถ„๋ฆฌ ๋ฐฉ๋ฒ• ์„ค๋ช… ๋ฐ ์ฝ”๋“œ (Java, Kotlin, JavaScript, Python) - intotherealworld/jamo

github.com

์ด ๋ ˆํฌ์— ์•„์ฃผ ์„ค๋ช…์ด ์ž˜ ๋‚˜์™€ ์žˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ๋‹ค๋ค„๋ณธ๊ฒŒ ์ฒ˜์Œ์ด๋ผ ์‹ ๊ธฐํ•œ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

fun findFinality(lastChar: Char): String {
    return when (val jongsung = lastChar.code) {
        in 0xD7A3 downTo 0xAC00 -> {
            if ((jongsung - 0xAC00) % 28 > 0) "์ด"
            else "๊ฐ€"
        }
        
        else -> {
            "๊ฐ€"
        }
    }
}

 

์ž…๋ ฅ์œผ๋กœ๋Š” ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋งŒ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.

char์˜ UTF-16 code๋กœ ํ•„ํ„ฐ๋ง์„ ํ•˜๋Š”๋ฐ, ํ•œ๊ธ€ ๋ฒ”์œ„์ธ 0xD7A3 ~ 0xAC00์„ ๋ฒ—์–ด๋‚˜๋ฉด "์ด"๋ฅผ ๋ถ™์ผ ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ ๋ฌด์กฐ๊ฑด "๊ฐ€"๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

((์ดˆ์„ฑ์ˆœ์„œ * 21) + ์ค‘์„ฑ์ˆœ์„œ) * 28 + ์ข…์„ฑ์ˆœ์„œ = ์ˆœ์ˆ˜ํ•œ๊ธ€์ฝ”๋“œ

 

ํ•œ๊ธ€์ด๋ผ๋ฉด ์ด์ œ 0xAC00์„ ๋นผ์„œ ์ˆœ์ˆ˜ ํ•œ๊ธ€ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๊ณ (char์—์„œ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์ธ '0' ๋นผ๋Š” ๊ฒƒ๊ณผ ๋™์ผ ๊ฐœ๋…) 28๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด "์ด"๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.

 

์ด/๊ฐ€ ๋ง๊ณ  ์€/๋Š” ์˜ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ถ„๋ฐฉ์‹์ด๋‹ค.

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”!

 

๋ฐ˜์‘ํ˜•
COMMENT