๐Ÿ”ฅ TIL - Day 36

Kim Dae Hyunยท2021๋…„ 10์›” 23์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
42/93

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด์— ์ง€์ณ์„œ ํ•˜๋Š” CS ๊ณต๋ถ€ ..

๋ฉด์ ‘ ๋‹จ๊ณจ์ฃผ์ œ์ธ ํ”„๋กœ์„ธ์Šค, ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž.

๋จผ์ € ํ”„๋กœ์„ธ์Šค !!


๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค

ํ”„๋กœ์„ธ์Šค์˜ ์ •์˜ ๊ฐ์ž์˜ ์–ธ์–ด์— ๋”ฐ๋ผ ๋งŽ์ด ๋‹ฌ๋ผ์ง€๊ฒ ์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐ ํ•˜๋Š” ๋ฝ€์ธํŠธ๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์„œ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์กฐ๊ธˆ ๋” ์‹ ๊ฒฝ์จ์„œ ๋ณผ ๋ถ€๋ถ„์€ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ƒฅ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜์–ด์•ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿผ ์–ด๋–ค ์ž์›์„ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›๋Š”๊ฐ€?
CPU๋ฅผ ์ ์œ ํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
CPU ์‹œ๊ฐ„? OK. ์•Œ์•„์„œ ์ž˜ ๋ฐ›์•„์˜ค๊ฒ ์ง€. ๊ทธ๋Ÿผ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๊ฐ€?

Code, Data, Stack, Heap 4๊ฐœ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. ํ•˜๋‚˜์”ฉ ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด์ž.

โœ”๏ธ Code ์˜์—ญ

  • ์ฝ”๋“œ ์˜์—ญ์—๋Š” ๋‹น์—ฐํžˆ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋”ฉํ•œ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค. ์ œ์–ด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜, ์ƒ์ˆ˜ ๋“ฑ์ด ํ•ด๋‹น๋œ๋‹ค.
  • ํ•˜๋‚˜ ๊ธฐ์–ตํ•  ๊ฒƒ์€ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ „์—ญ๋ณ€์ˆ˜๋Š” Code ์˜์—ญ์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

โœ”๏ธ Data ์˜์—ญ

  • Data ์˜์—ญ์—๋Š” ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ดˆ๊ธฐํ™”๋œ ์ „์—ญ๋ณ€์ˆ˜๋งŒ Data ์˜์—ญ์— ์ €์žฅํ•œ๋‹ค.
  • ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ „์—ญ๋ณ€์ˆ˜๋Š” BSS ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค.

โœ”๏ธ heap ์˜์—ญ

  • ํž™ == ๋™์ 
  • ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์˜์—ญ์ด๋‹ค.

โœ”๏ธ Stack ์˜์—ญ

  • ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜, ๋ฆฌํ„ด๊ฐ’, ๋ณต๊ท€์ฃผ์†Œ ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
  • Stack ์˜์—ญ์€ ๋ง ๊ทธ๋Œ€๋กœ Stack ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ›„์ž…์„ ์ถœ์˜ ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ชผ๊ธˆ๋งŒ ๋” !

ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์„ ๊ฐ–๋Š”๋‹ค.
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ์–ด๋–ค ๊ฒƒ๋„ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ตฌ๋™๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฒฝ์šฐ ์„œ๋กœ์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฐ€? ๋†‰๋†‰๋†‰
IPC ๋“ฑ ๋ช‡ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์ง€์›ํ•œ๋‹ค.

IPC ๋ถ€๋ถ„์€ ์ด ๋ถ€๋ถ„๋งŒ ํ•ด๋„ ์–‘์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™์•„ ๋‹ค์Œ์— ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ํ•œ๋‹ค..



๐Ÿ“Œ ์“ฐ๋ ˆ๋“œ

์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์œ„์น˜ํ•œ๋‹ค.
์“ฐ๋ ˆ๋“œ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์“ฐ๋ ˆ๋“œ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์“ฐ๋ ˆ๋“œ๋Š” ์ž์‹ ์˜ Stack์„ ์ œ์™ธํ•˜๊ณ  Code, Data, Heap ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค.

๊ทธ๋ƒฅ ํ”„๋กœ์„ธ์Šค์˜ Code, Data, Heap ์˜์—ญ์„ ๊ฐ™์ด ๋‚˜๋ˆ ์„œ ์“ด๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์•ž์„œ ํ”„๋กœ์„ธ์Šค์˜ ์ •์˜์—์„œ ๋งํ–ˆ๋Š”๋ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์“ฐ๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋กœ๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์“ฐ๋ ˆ๋“œ์˜ ํŠน์ง• ์ค‘ ์ค‘์š”ํ•œ ๊ฒƒ ํ•˜๋‚˜๋ฅผ ์•Œ๊ณ  ๊ฐ€์ž
์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ค ํ•œ ์“ฐ๋ ˆ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด? ํ•œ ํ”„๋กœ์„ธ์Šค ์ „์ฒด์˜ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ ๋…๋ฆฝ์ ์ธ ์˜์—ญ์„ ๊ฐ€์ง€๋ฏ€๋กœ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฌธ์ œ๊ฐ€ ์ „์ด๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด์— ๋Œ€ํ•œ ์˜ˆ๋กœ IE์™€ Chrome์ด ์žˆ๋‹ค.
์š”์ฆ˜์€ IE๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๋ถˆ๊ณผ ๋ช‡ ๋…„ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ๋งŽ์ด ์ผ์—ˆ๋‹ค.. ๊ทธ ๋•Œ์˜ ์ถ”์–ต์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด IE์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํƒญ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ํ•œ ํƒญ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ด๋–ค alert ๋ฅผ ๋„์šฐ๊ณ  ๋ชจ๋“  ํƒญ์„ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค. Chrome์˜ ๊ฒฝ์šฐ ๊ฐ ํƒญ์ด ๋ชจ๋‘ ํ”„๋กœ์„ธ์Šค๋กœ ๋˜์–ด ํ•œ ํƒญ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ํƒญ๋งŒ ์ข…๋ฃŒ๋œ๋‹ค.




+++ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด

์˜ค๋Š˜ ์žฌ๋ฐŒ๋Š”? ์งœ์ฆ๋‚˜๋Š”? ์ข‹์€? ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜์„œ ์†Œ๊ฐœํ•œ๋‹ค.

https://www.acmicpc.net/problem/1436

๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜์ž๋ฉด 666 ์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์ข‹์•„์„œ ์ž์‹ ์˜ ์˜ํ™” ์‹œ๋ฆฌ์ฆˆ์— ์ด ์ˆซ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จ์‹œํ‚ฌ ๊ฒƒ์ธ๋ฐ 666์„ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์˜ํ™”์ œ๋ชฉ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

666 -> 1666 -> 2666 -> 3666 -> 4666 -> ... 10666 -> 11666 ...

์ด ๋ฌธ์ œ๋ฅผ ์ ‘ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ ์‹ค์ˆ˜๋ฅผ ํ•œ ๊ฒƒ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜๋ฅผ ๋ดค๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๊ฒƒ์„ ๋ชป๋ดค๋‹ค๋ฉด ์•„์ง ํ’€๊ณ  ์žˆ์—ˆ์„ ์ˆ˜๋„....

ํ•ด๊ฒฐ
666 ์—์„œ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ 666์„ ํฌํ•จํ•˜๋Š” ์ˆœ๊ฐ„ ์˜ํ™”์ œ๋ชฉ์„ ํ•œ ๊ฐœ ์ง€์€๊ฑธ๋กœ ํŒ๋‹จํ•ด๋ณด์ž.

์ผ๋‹จ ๋งจ ์ฒ˜์Œ ์‹œ์ž‘์ด 666 ๋ถ€ํ„ฐ๋‹ˆ๊นŒ ์˜ํ™”์ œ๋ชฉ ํ•œ ๊ฐœ๋Š” ์ง“๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.
์ด์ œ 666๋ถ€ํ„ฐ 1์”ฉ ์ญ‰~ ์ฆ๊ฐ€ํ•œ๋‹ค. (667, 668 669 670 .......1665)
์ฆ๊ฐ€๋˜๋‹ค๊ฐ€ 1665๊ฐ€ ๋์„ ๋•Œ ๋‹ค์Œ ์ˆ˜๋Š” 1666์ด๋‹ค. 666์„ ํฌํ•จํ•œ๋‹ค. ์˜ํ™”์ œ๋ชฉ์„ ํ•œ ๊ฐœ ์ง€์€๊ฑธ๋กœ ํŒ๋‹จํ•œ๋‹ค.

๊ทธ๋Ÿผ 666์ด ํฌํ•จ๋˜๋Š” ์—ฌ๋ถ€๋ฅผ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ• ๊นŒ?
ํŒŒ์ด์ฌ์˜ ์ฉŒ๋Š” String ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

if '666' in str(number): 
    ...

ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ์œ„์— ์ฒ˜๋Ÿผ ํ™•์ธํ•œ๋‹ค.

๋‹ค ํ•ด๊ฒฐ๋๋‹ค.
666์„ ๋ฐœ๊ฒฌํ•  ๋•Œ๋งˆ๋‹ค ์˜ํ™”์ œ๋ชฉ ์นด์šดํŠธ(n)์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ  n์ด 0์ด ๋์„ ๋•Œ ๋ฐ˜๋ณต์„ ์ข…๋ฃŒํ•œ๋‹ค.
666์—์„œ๋ถ€ํ„ฐ ์ฆ๊ฐ€๋  ์ˆซ์ž๋Š” ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€๋งŒ ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

def solve(n):
    res = 666

    while True:
        if '666' in str(res):
            n -= 1
            if n == 0:
                break
        res += 1

    return res


n = int(input())
print(solve(n))
profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

0๊ฐœ์˜ ๋Œ“๊ธ€