์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [Node.js] Slack ๋ด‡์œผ๋กœ ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค DM ๋ฐœ์†กํ•˜๊ธฐ

    42Seoul์˜ ์บ๋น„๋‹› ๋Œ€์—ฌ ์„œ๋น„์Šค ๋ฐฐํฌ๋ฅผ ์•ž๋‘๊ณ  ๋ฐ˜๋‚ฉ๊ธฐํ•œ์ด ์ž„๋ฐ•ํ•œ ์œ ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์Šฌ๋ž™ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•˜๋Š” ์Šฌ๋ž™๋ด‡์„ ๋งŒ๋“ค์–ด๋ดค๋‹ค. ๋Œ€์—ฌ ์„ฑ๊ณต์‹œ & ๋งค์ผ ์˜ค์ „ 9์‹œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ˜๋‚ฉ์ผ์ด ๋‹ค์Œ ๋‚ ์ธ ํ•™์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ์Šฌ๋ž™ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•œ๋‹ค. ์Šฌ๋ž™ ๋ด‡์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์€ ์ƒ๋žตํ•˜๊ฒ ๋‹ค. https://api.slack.com/apps ์œ„ ์ฃผ์†Œ๋กœ ์ ‘์† ํ›„ ์Šฌ๋ž™๋ด‡์„ ์ƒ์„ฑํ•˜์˜€๋‹ค๋ฉด Features -> OAuth & Permissions -> Scopes ์—์„œ ์ง€์ •ํ•œ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ด‡์ด ์‚ฌ์šฉํ•  ๊ถŒํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. DM ๋ฐœ์†ก์„ ์œ„ํ•œ chat: write ๊ณผ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ์œ ์ € ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•œ user:read ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•œ ํ›„ OAuth Tokens for Your Workspace๋กœ ์˜ฌ๋ผ๊ฐ€์„œ ํ† ..

    [42Seoul] Philosophers : ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด

    ์ด๋ฒˆ ๊ณผ์ œ๋Š” Dining Philosophers Problems (์ฒ ํ•™์ž๋“ค์˜ ๋งŒ์ฐฌ ๋ฌธ์ œ)๋ฅผ Mutex๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. Dining Philosophers Problems ์ด๋ž€? ์ฒ ํ•™์ž๋“ค์˜ ๋งŒ์ฐฌ๋ฌธ์ œ๋Š” n๋ช…์˜ ์ฒ ํ•™์ž๊ฐ€ ์›ํ˜• ํ…Œ์ด๋ธ”์— ์•‰์•„์žˆ์œผ๋ฉฐ ์–‘์ชฝ์—๋Š” ํฌํฌ๊ฐ€ ๋†“์—ฌ์ ธ ์žˆ๊ณ  ํ…Œ์ด๋ธ”์˜ ์ค‘๊ฐ„์—๋Š” ์Œ์‹์ด ์žˆ๋‹ค. ๊ฐ ์ฒ ํ•™์ž๋Š” ์–‘์ชฝ์˜ ํฌํฌ๋ฅผ ๋ชจ๋‘ ์ง‘์–ด์•ผ๋งŒ ์Œ์‹์„ ๋จน์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ์ •์‹œ๊ฐ„ ์Œ์‹์„ ๋จน์ง€ ๋ชปํ•˜๋ฉด ์ฃฝ๋Š”๋‹ค. ์Œ์‹์„ ๋‹ค ๋จน์œผ๋ฉด ํฌํฌ๋ฅผ ๋‚ด๋ ค๋†“๊ณ  ์ƒ๊ฐ์„ ์‹œ์ž‘ํ•˜๋ฉฐ ์ผ์ •์‹œ๊ฐ„ ์ƒ๊ฐ์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ ํฌํฌ๋ฅผ ๋“ค๊ณ  ์Œ์‹์„ ๋จน๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒ ํ•™์ž๋Š” process / thread ๊ฐ€ ๋˜๋ฉฐ ํฌํฌ๋Š” ๊ณต์œ ์ž์›์ด ๋œ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ต์ฐฉ ์ƒํƒœ(Deadlock)์„ ์ž˜ ์„ค๋ช…ํ•˜๋Š” ์˜ˆ์‹œ์ด๋ฉฐ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐ€์ง€..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 6 :: ์ธํ„ฐํŽ˜์ด์Šค (Interface)

    ๐Ÿ‘€ ๋…ธ์…˜์œผ๋กœ ๋ณด๊ธฐ 0. ์ธํ„ฐํŽ˜์ด์Šค๋ž€? ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ผ์ข…์˜ ์ถ”์ƒํด๋ž˜์Šค๋กœ ์ถ”์ƒ๋ฉ”์†Œ๋“œ, ์ƒ์ˆ˜๋งŒ ํฌํ•จ ๊ฐ€๋Šฅ ๐Ÿ’ก ์ž๋ฐ” 8 ๋ถ€ํ„ฐ default ๋ฉ”์†Œ๋“œ, static ๋ฉ”์†Œ๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉค๋ฒ„๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ ์ถ”์ƒ ํด๋ž˜์Šค์ฒ˜๋Ÿผ new ๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด์ƒ์„ฑ์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์„ ์–ธ๊ณผ ์ƒ์† interface InterfaceName { } class ClassName implements InterfaceName{ } 1. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์“ฐ๋Š” ์ด์œ  ๊ทธ๋ ‡๋‹ค๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์“ฐ๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ? ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ๋ณด๋‹ค ๋” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ด๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ตฌํ˜„ ๋ฉ”์„œ๋“œ๋„ ํฌํ•จ์„ ํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์˜ ๊ฐœ๋…์ด๋ผ๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ€ ์—†์–ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๊ฐ•์ œํ•œ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋‹ค์ค‘์ƒ์†์„ ์ง€์›ํ•˜์ง€..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 5 :: ๋‹คํ˜•์„ฑ / InstanceOf / Abstract Class / Upcasting & Downcasting

    ๋‹คํ˜•์„ฑ(polymorphism) ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๋‹คํ˜•์„ฑ์ด๋ž€ "์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”"์ด๋ž€ ๋œป์ด๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์ƒ์œ„ ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋กœ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. class Animal{ void run(){System.out.println("๋‹ฌ๋ฆฌ์ž");} } class Cat extends Animal{ void eat(){System.out.println("์ธ„๋ฅด๋จน์ž");} } class Polymorphism{ public static void main(String[] args) { Animal cat = new Cat(); cat.run(); // cat.eat(); error } } ์‹ค์ œ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋Š” Cat ํƒ€์ž…์ด์ง€๋งŒ Animal ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐ๋˜์—ˆ๋‹ค. ์ด..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 4 :: ์ƒ์† / ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding) / IS-A vs HAS-A / ๊ฐ€์ƒํ•จ์ˆ˜

    ์ƒ์†(Inheritance) ์ƒ์†์ด๋ž€, ๊ธฐ์กด์— ์žˆ๋˜ ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ์ƒ์†์„ ๋ฐ›๋Š” ํด๋ž˜์Šค๋Š” ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค : ์ƒ์œ„ ํด๋ž˜์Šค, ๋ถ€๋ชจ ํด๋ž˜์Šค, base class, super class ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค : ํ•˜์œ„ํด๋ž˜์Šค, ์ž์‹ ํด๋ž˜์Šค, derived class, sub class ๊ธฐ์กด์— ์žˆ๋˜ ํด๋ž˜์Šค๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•  ๋•Œ ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ์ƒ์†์„ ํ•˜๊ฒŒ๋œ๋‹ค. ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋“ค์„ ์ƒ์† ๋ฐ›๊ฒŒ ๋˜์–ด ์ž์‹ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค. ์ƒ์†์€ ์•„๋ž˜์™€ ๊ฐ™์ด extends(ํ™•์žฅ)๋ฅผ ์‚ฌ์šฉํ•ด ์ž‘์„ฑํ•œ๋‹ค. class Child extends Parent{ } extends ๋’ค์—๋Š” ๋‹จ ํ•˜..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 3 :: Static / Singleton Patton / Array / ArrayList

    Static ์ด๋ž€? static์€ ์ •์ ์ธ, ๊ณ ์ •๋œ์ด๋ž€ ์˜๋ฏธ๋กœ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํด๋ž˜์Šค๋กœ๋”๊ฐ€ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ ํ•จ๊ป˜ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. static์€ ํด๋ž˜์Šค, Method, ์ƒ์ˆ˜ ๋“ฑ๊ณผ ํ•จ๊ป˜ Method Area์— ํด๋ž˜์Šค ๋ณ„๋กœ ์ €์žฅ๋˜์–ด ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•œ๋‹ค. ์ฆ‰ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค. static ํ‚ค์›Œ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฉ”์†Œ๋“œ์™€ ๋ณ€์ˆ˜๋ฅผ ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค ๋ณ€์ˆ˜ ํ˜น์€ ์ •์  ํ•„๋“œ, ์ •์  ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์€ ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด์— ์†Œ์†๋œ ๊ฒƒ์ด ์•„๋‹Œ ํด๋ž˜์Šค์— ์†Œ์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ •์  ๋ฉค๋ฒ„ ์„ ์–ธ class Sclass{ static int cVar = 123; //ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™” ..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 2 :: ์ƒ์„ฑ์ž / ์˜ค๋ฒ„๋กœ๋”ฉ / ์ ‘๊ทผ์ œ์–ด์ž / ์ •๋ณด์€๋‹‰

    ์ƒ์„ฑ์ž ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์— ์„ ์–ธ๋˜์–ด์žˆ๋Š” ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค. ์ƒ์„ฑ์ž์™€ ๋ฉ”์†Œ๋“œ์˜ ํ˜•ํƒœ ์ฐจ์ด ๋ฉ”์†Œ๋“œ ์ƒ์„ฑ์ž ๊ตฌํ˜„๋ถ€ returnํ˜• ๋ฉ”์†Œ๋“œ๋ช… (ํŒŒ๋ผ๋ฏธํ„ฐ 1, ํŒŒ๋ผ๋ฏธํ„ฐ2,,,) ํด๋ž˜์Šค๋ช…(ํŒŒ๋ผ๋ฏธํ„ฐ 1, ํŒŒ๋ผ๋ฏธํ„ฐ 2,,,) ex) int Sum(int a, int b) ClassName(int a, int b) ์ด์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋Š” ๋ฆฌํ„ดํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„ ๋ฉค๋ฒ„๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๊ฐ€ ์ œ๊ณต๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ƒ์„ฑ์ž๋ฅผ์„ ๋””ํดํŠธ ์ƒ์„ฑ์ž๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ๋””ํดํŠธ ์ƒ์„ฑ์ž๋Š” precompile ๋‹จ๊ณ„์—์„œ ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค. ๋งŒ์•ฝ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ๊ตฌํ˜„..

    [JAVA] :: ์ž๋ฐ” ๊ธฐ์ดˆ 1 :: ๊ฐ์ฒด / ํด๋ž˜์Šค / ์ธ์Šคํ„ด์Šค / ์†์„ฑ / ํ•จ์ˆ˜ / ๋ฉ”์†Œ๋“œ

    ์ž๋ฐ”๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ(Objecti Oriented Programming) ์–ธ์–ด์ด๋‹ค. C์–ธ์–ด์™€ ๊ฐ™์€ ์ ˆ์ฐจ์ง€ํ–ฅ์–ธ์–ด์™€ ๋‹ค๋ฅธ์ ์€ ์ž๋ฐ”๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. OOP์˜ ์žฅ์ ์—๋Š” ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ๊ณผ ์žฌํ™œ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ ˆ์ฐจ์ง€ํ–ฅ์— ๋น„ํ•ด ๊ฐœ์„ ๋˜๋Š” ์ ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋…๋“ค์„ ์•Œ์•„๋ณด์ž. ๊ฐ์ฒด(object) ๊ฐ์ฒด๋ž€ object, ์กด์žฌํ•˜๋Š” ์‚ฌ๋ฌผ ํ˜น์€ ๊ฐœ๋…, ๋…ผ๋ฆฌ์™€ ๊ฐ™์€ ๋ฌดํ˜•์ ์ธ ๊ฒƒ๋“ค๋„ ๊ฐ์ฒด๋ผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ๋žŒ, ์ฐจ, ์ฑ… ๋“ฑ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐœ๋…์ ์ธ ์ฃผ๋ฌธ, ๊ณ„์‚ฐ ๋“ฑ๋„ ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ •์˜ํ•œ๋‹ค. ํด๋ž˜์Šค(clas..

    [42 Seoul] Minitalk : signal ํ•จ์ˆ˜๋กœ IPC(Inter-Process Communication) ๊ตฌํ˜„

    1. signal ์ด๋ž€ ์‹œ๊ทธ๋„(signal)์€ software interrupt ๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋น„๋™๊ธฐ์  ์ด๋ฒคํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ , ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ์šด์˜์ฒด์ œ์—์„œ ์ œ๊ณต๋˜๋Š” IPC ์ค‘ ํ•˜๋‚˜์ด๋‹ค. signal์„ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๋ฉด ๊ฐ signal์— ์ง€์ •๋œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 2. signal ํ•จ์ˆ˜ signal signal ํ•จ์ˆ˜๋Š” ์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ ์‹œ๊ทธ๋„์„ ๋ฐ›์•„ ์ง€์ •๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. signal(SIGINT, (void *)sig_handler); ์•„๋ž˜๋Š” signal์˜ ์ข…๋ฅ˜์ด๋‹ค. SIGHUP ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„ ๋•Œ ์ด ํ„ฐ๋ฏธ๋„๊ณผ ์—ฐ๊ฒฐ๋œ ์„ธ์…˜ ๋ฆฌ๋” ๋˜๋Š” ์„ธ์…˜์— ์†ํ•œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ๋ณด๋‚ด์ง€๋Š”๋ฐ ์ด ์‹œ๊ทธ๋„์„ ๋ฐ›์œผ๋ฉด ์ข…๋ฃŒ SIGINT ํ„ฐ๋ฏธ๋„์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋ณด๋‚ด์ง€๋Š”๋ฐ ์ด ์‹œ๊ทธ๋„ ๋ฐ›์œผ๋ฉด ์ข…๋ฃŒ..

    [42Seoul] Push_Swap : ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

    1. ๊ฒŒ์ž„ ๊ทœ์น™ ์ด ๊ฒŒ์ž„์€ a์™€ b๋ผ๋Š” ์ด๋ฆ„์˜ ๋‘ ๊ฐœ์˜ ์Šคํƒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ๊ฒŒ์ž„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘ํ•œ๋‹ค. a๋Š” ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์Œ์ˆ˜ ํ˜น์€ ์–‘์ˆ˜์ธ ๋‚œ์ˆ˜๋“ค์„ ํฌํ•จํ•œ๋‹ค. b๋Š” ๋น„์–ด์žˆ๋‹ค. ์ด ๊ฒŒ์ž„์˜ ๋ชฉํ‘œ๋Š” ์Šคํƒ a์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •๋ ฌ์„ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋“ค์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ช…๋ น์–ด ๊ธฐ๋Šฅ sa : swap a ์Šคํƒ a์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋‘ ์›์†Œ์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค. sb : swap b ์Šคํƒ b์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋‘ ์›์†Œ์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค. ss : sa + sb sa์™€ sb๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•œ๋‹ค. ๋ช…๋ น์–ด ๊ธฐ๋Šฅ pa : push a ์Šคํƒ b์—์„œ ๊ฐ€์žฅ ์œ„(ํƒ‘)์— ์žˆ๋Š” ์›์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ, ์Šคํƒ a์˜ ๋งจ ์œ„(ํƒ‘)์— ๋„ฃ๋Š”๋‹ค. ์Šคํƒ b๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. pb : push..