์ฝ”ํ…Œ๋ฅผ ์œ„ํ•œ Java ๋ฌธ๋ฒ• ์ •๋ฆฌ
ยท
CodingTest
์ง€๊ธˆ๊นŒ์ง€๋Š” C++์ด๋‚˜ ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์™”๋Š”๋ฐ, ๋ฐฑ์—”๋“œ ์ง๋ฌด์˜ ๊ฒฝ์šฐ Java๋กœ ์‘์‹œ ์–ธ์–ด๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š” ๋“ฏ ํ•ด์„œ Java๋ฅผ ์ฃผ ์–ธ์–ด๋กœ ์ฑ„ํƒํ•ด์„œ ์ฝ”ํ…Œ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”๋กœ ์ฝ”ํ…Œ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฌธ๋ฒ•, ์œ ์šฉํ•œ ํ’€์ด ์ผ€์ด์Šค ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋ฐฐ์—ด์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์— ๊ฐ’ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•import java.util.ArrayList;public class App { public static void main(String[] args) { ArrayList a = new ArrayList(); a.add(1); }}์ •์ ๋ฐฐ์—ด vs ๋™์ ๋ฐฐ์—ดimport java.util.ArrayList;public class App { public stati..
[์•Œ๊ณ ๋ฆฌ์ฆ˜]ํŒŒ์ผ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ
ยท
CodingTest/Algorithm
ํŒŒ์ผ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ํŒŒ์ผ ์••์ถ•์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณด๋‹ค ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋งž์ถ”์–ด ์—ฐ๊ตฌํ•œ๋‹ค.์ปดํ“จํ„ฐ ํŒŒ์ผ ๋Œ€๋ถ€๋ถ„์ด ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์— ์ฐฉ์•ˆํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ, ์ด๋ฏธ์ง€, ์‚ฌ์šด๋“œ ๋“ฑ์˜ ํŒŒ์ผ์„ ์••์ถ•ํ•œ๋‹ค. ์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ์ด ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ๊ฒฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์†ํ•œ๋‹ค. ํ—ˆํ”„๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ํ—ˆํ”„๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŠธ๋ผ์ด(Trie) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ ๋‹ค.ํŠธ๋ผ์ด๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ž ์ฝ”๋“œ์˜ ์ ‘๋‘๋ถ€(prefix)๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.ํŠธ๋ผ์ด๋ฅผ ํŠธ๋ฆฌ์™€ ํ˜ผ๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ Trie์˜ ์–ด์›์€ retrieve๋กœ๋ถ€ํ„ฐ ์™”์œผ๋ฉฐ ํŠธ๋ฆฌ์™€๋Š” ์—„์—ฐํžˆ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.  ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ์€ ์—ฌ๋Ÿฌ ํŠธ๋ผ์ด ์ค‘ ๊ฐ€์žฅ ์ข‹์€ ํŠธ๋ผ์ด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์šฐ์„ ์ˆœ์œ„ ํ(Pri..
[์•Œ๊ณ ๋ฆฌ์ฆ˜]๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - RSA ์•”ํ˜ธํ™”
ยท
CodingTest/Algorithm
๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • ์•”ํ˜ธํ™” ์ข…๋ฅ˜๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” ํ•ด์‰ฌ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ํŠน์ง•๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋ฅผ ๋ณด์™„ํ•œ ํ˜•ํƒœ๋กœ ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๊ฐ€ ๋“ฑ์žฅํ•˜๊ณ  ์“ฐ์ž„์ƒˆ๊ฐ€ ์ค„์—ˆ์œผ๋‚˜ ์•„์˜ˆ ์“ฐ์ด์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. md5, SHA256 ๋“ฑ์ด ๋Œ€ํ‘œ์ ์œผ๋กœ ์•„์ง๋„ ์“ฐ์ด๋Š” ๊ธฐ๋ฒ• ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋Œ€์นญํ‚ค ๋ฐฉ์‹๊ณผ ๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค) ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค.ex) ๋Œ€์นญํ‚ค - AES256, ๋น„๋Œ€์นญํ‚ค - RSA  ์–‘๋ฐฉํ–ฅ ๋Œ€์นญํ‚ค&์•”ํ˜ธํ™” ์‹œ์Šคํ…œ์›๋ฆฌ : ์•”ํ˜ธํ™” ํ‚ค์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณต๊ฐœ๋กœ ๋‘๊ณ ํ•ด๋…ํ‚ค์™€ ํ•ด๋… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๋ฐ€๋กœ ํ•œ๋‹ค. ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ์†ก์‹ ์ž๊ฐ€ ์ˆ˜์‹ ์ž์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ฐพ์•„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•œ ํ›„ ์ „์†ก์„ ํ•˜๊ณ ์ˆ˜์‹ ์ž๋Š” ์ž์‹ ์ด ๊ฐ€์ง„ ๋น„๋ฐ€ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณตํ˜ธํ™”ํ•˜์—ฌ P๋ฅผ ..