๐Ÿ‘ฉ‍๐Ÿ’ป/JavaScript

[Programmers] JavaScript์—์„œ ์‹œ์ € ์•”ํ˜ธ๋ฌธ ๋งŒ๋“ค๊ธฐ (charCodeAt, fromCharCode())

ํ•œ๋‚˜ 2021. 3. 1. 16:02

programmers.co.kr/learn/challenges

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต

๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ, ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”.

programmers.co.kr


์•ŒํŒŒ๋ฒณ์„ ์ผ์ •ํ•œ ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฐ€์–ด์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž๋ฅผ ๋งŒ๋“œ๋Š” ์‹œ์ € ์•”ํ˜ธ. ์•”ํ˜ธํ™” ํ•ด์•ผ ํ•  ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๋ฐ€์–ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ n์ด ์ฃผ์–ด์งˆ ๋•Œ ๋ณ€ํ™˜๋œ ์‹œ์ € ์•”ํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. (๋‹จ, ๊ณต๋ฐฑ์€ ์•„๋ฌด๋ฆฌ ๋ฐ€์–ด๋„ ๊ณต๋ฐฑ์ด๋‹ค. ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ๊ณต๋ฐฑ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.)

์ฝ”๋“œ

๋ฌธ์ž์—ด์€ iterableํ•œ ๊ฐ์ฒด์ด๋ฏ€๋กœ for of ๋ฌธ๋ฒ•์œผ๋กœ ๋ฌธ์ž ํ•˜๋‚˜ ํ•˜๋‚˜๋ฅผ ๊ฒ€์‚ฌํ–ˆ๋‹ค. ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ์—๋Š” ๋นˆ ๊ณต๋ฐฑ์„ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•  ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์ธ newStr์— ๋”ํ•ด์ฃผ๊ณ , continue๋กœ ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

String.prototype.charCodeAt() ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ UTF-16 ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 0~65535 ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 'ABC'.charCodeAt(0)๋Š” 65๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹์ด๋‹ค. ์—ฌ๊ธฐ์— ๋ฐ€์–ด์•ผ ํ•  ๊ฑฐ๋ฆฌ(n)๋ฅผ ๋”ํ•œ๋‹ค.

 

์ด๋•Œ ํ•ด๋‹น ์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋ฌธ์ž๊ฐ€ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ์†Œ๋ฌธ์ž์ด๋ฉด์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ๋ฅผ con1๋กœ, ๋Œ€๋ฌธ์ž์ด๋ฉด์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ๋ฅผ con2๋กœ ๋‚˜๋ˆ„์—ˆ๊ณ , ๋‘˜๋‹ค์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š”

 

String.fromCharCode(encodedUnicode) ๋ฉ”์„œ๋“œ๋ฅผ ์จ์„œ ๋ฐ”๋กœ ๋ฐ˜ํ™˜๋  ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์— ๋”ํ–ˆ๋‹ค.

String.prototype.fromCharCode() ๋ฉ”์„œ๋“œ๋Š” UTF-16 ์ฝ”๋“œ ์œ ๋‹›์˜ ์‹œํ€€์Šค๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. String ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. String.fromCharCode(65,66,67)์€ 'ABC'๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹์ด๋‹ค. refine function์„ ํ•˜๋‚˜ ์ •์˜ํ•ด๋‘์—ˆ๋Š”๋ฐ, ๋ณด์ •์„ ์œ„ํ•ด ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž ๊ฐ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค.

๋‹ค๋ฅธ ํ’€์ด

์œ„ ํ’€์ด์—์„œ ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ด๋‹ค. s.charCodeAt(0) > 90, ์ฆ‰ ๋ฌธ์ž์˜ UTF-16 ์ฝ”๋“œ ๊ฐ’์ด ๋Œ€๋ฌธ์ž ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

unicode-table.com/kr

 

์œ ๋‹ˆ ์ฝ”๋“œ ๋ฌธ์ž ๋ฐฑ๊ณผ ์‚ฌ์ „

์œ ๋‹ˆ ์ฝ”๋“œ ๋ฌธ์ž ๊ฒ€์ƒ‰ ์›น ์„œ๋น„์Šค. ์ฆ๊ฒจ ์ฐพ๋Š” ๋ฌธ์ž๋ฅผ ์ฐพ์•„์„œ ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค : ๐Ÿ˜Ž ์—๋ชจ์ง€, ๏ธ ํ™”์‚ดํ‘œ, โœช ๋ณ„, ๐Ÿ’ฒ ํ†ตํ™”, ๐Ÿˆ‚๏ธ ๊ธ€์“ฐ๊ธฐ ์‹œ์Šคํ…œ ๋ฐ ๊ธฐํƒ€ ๐Ÿšฉ

unicode-table.com

๋Œ€๋ฌธ์ž ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‹ค๋ฉด, ์†Œ๋ฌธ์ž ๋ฒ”์œ„์˜ ์‹œ์ž‘์ธ 97์„ ๋นผ์ฃผ์–ด ๋ณด์ •์„ ํ•ด์ฃผ๊ณ , ๊ฑฐ๋ฆฌ n๋งŒํผ์„ ๋”ํ•œ๋‹ค. ์ด ๊ฐ’์„ 26์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋Š” ๊ตฌํ•˜๊ณ , ๋ณด์ •์„ ์œ„ํ•ด ๋บ๋˜ 97์„ ๋‹ค์‹œ ๋”ํ•œ๋‹ค. 26์€ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์†Œ๋ฌธ์ž์— ๋Œ€ํ•ด์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€ ๋กœ์ง์„ ์‚ฌ์šฉํ•œ๋‹ค. refine ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ฒ”์œ„๋ฅผ ๊ตฌ๋ถ„ํ•ด์ฃผ๊ณ  ๊ฐ๊ฐ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค ๊ณตํ†ต์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐœ์„ ๋œ ๋ฐฉ๋ฒ•!

์ฐธ๊ณ