[자료ꡬ쑰] 3κ°• - μŠ€νƒ

2025. 8. 25. 14:31Β·πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅/πŸ”’μžλ£Œκ΅¬μ‘°

βœ… 1. μŠ€νƒμ˜ κ°œλ…

(1) μŠ€νƒμ˜ μ •μ˜

  • 객체와 κ·Έ 객체가 μ €μž₯λ˜λŠ” μˆœμ„œλ₯Ό κΈ°μ–΅ν•˜λŠ” 방법에 κ΄€ν•œ μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • κ°€μž₯ λ¨Όμ € μž…λ ₯된 μžλ£Œκ°€ κ°€μž₯ λ‚˜μ€‘μ— 좜λ ₯λ˜λŠ” 관계λ₯Ό ν‘œν˜„ν•¨
  • μ‰½κ²Œλ§ν•΄, μŠ€νƒμ€ ν›„μž…μ„ μΆœλ‘œμ¨ κ°€μž₯ λ‚˜μ€‘μ— 넣은 객체가 κ°€μž₯ λ¨Όμ € λ‚˜μ˜¨λ‹€.
  • μ΄λŸ¬ν•œ 좔상 μžλ£Œν˜•μ„ κ΅¬ν˜„ν•˜λ €λ©΄ κ΅¬ν˜„κ³Όμ •μ—μ„œ μ €μž₯λ˜λŠ” μˆœμ„œλ₯Ό κΈ°μ–΅ν•΄μ€˜μ•Ό ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
  • 관계λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œ 연산이 ν•„μš”ν•˜λ©°, 객체에 λŒ€ν•œ μ •μ˜μ™€ 연산이 λͺ¨μ—¬μ„œ μˆœμ„œκ°€ κΈ°μ–΅λ˜λŠ” μŠ€νƒμ˜ 좔상 μžλ£Œν˜•μ΄ 완성됨
  • μ‰½κ²Œλ§ν•΄, 자료 κ΅¬μ‘°μ—μ„œ 데이터λ₯Ό λ‹¨μˆœνžˆ μ €μž₯ν•˜λŠ” κ²ƒλΏλ§Œ μ•„λ‹ˆλΌ, 데이터λ₯Ό λ‹€λ£¨λŠ” 연산이 μ€‘μš”ν•˜λ©° μŠ€νƒ(abstract data type, ADT)은 **데이터(객체) + μ—°μ‚°(push, pop λ“±)**이 λͺ¨μ—¬ λ§Œλ“€μ–΄μ§€κ³  μŠ€νƒμ€ ν›„μž…μ„ μΆœ(LIFO) μˆœμ„œλ₯Ό μœ μ§€ν•œλ‹€λŠ” νŠΉμ„±μ„ κ°€μ§„λ‹€λŠ” μ˜λ―Έμ΄λ‹€.
  • 0개 μ΄μƒμ˜ μ›μ†Œλ₯Ό κ°–λŠ” μœ ν•œ μˆœμ„œ λ¦¬μŠ€νŠΈμ΄λ‹€.
  • push(add)와 pop(delete)연산이 ν•œκ³³μ—μ„œ λ°œμƒλ˜λŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€.

βœ… 2. μŠ€νƒμ˜ 좔상 μžλ£Œν˜•

(1) μŠ€νƒμ˜ μΆ”μƒμžλ£Œν˜•

  • μŠ€νƒ 객쳬: 0개 μ΄μƒμ˜ μ›μ†Œλ₯Ό κ°–λŠ” μœ ν•œ μˆœμ„œ 리슀트

(2) CreateStack μ—°μ‚° ( Stack 좔상 μžλ£Œν˜• )

  • Stack 자료ꡬ쑰의 좔상 μžλ£Œν˜•μœΌλ‘œ, CreateStack μ—°μ‚°μ˜ λŒ€ν•œ μ •μ˜μ΄λ‹€.

(3) Push μ—°μ‚°

  • μŠ€νƒμ˜ Push 연산은 κ°€μž₯ μœ„μ— 데이터λ₯Ό μ‚½μž…ν•˜κ³ , ν•΄λ‹Ή μŠ€νƒμ„ λ°˜ν™˜μ„ ν•΄μ€€λ‹€.
  • ν•΄λ‹Ή 뢀뢄은 Stack 의 Push μ—°μ‚°μ˜ λŒ€ν•œ μ •μ˜μΈ 좔상 μžλ£Œν˜•μ΄λ‹€.

(4) Pop μ—°μ‚°

  • κ°€μž₯ μœ„μ˜ μžˆλŠ” μ›μ†Œλ₯Ό μ‚­μ œν•˜κ³  λ°˜ν™˜μ„ ν•΄μ£ΌλŠ” 연산을 μ˜λ―Έν•œλ‹€.

(5) 정리

  • μŠ€νƒμ€ λ©”λͺ¨λ¦¬μ˜ 자유둜운 μ‚¬μš©(λ¬΄μž‘μœ„ μ ‘κ·Ό)을 μ–΅μ œν•˜κ³ , 데이터λ₯Ό μΌμ •ν•œ κ·œμΉ™(LIFO)으둜만 μ ‘κ·Όν•˜λ„λ‘ κ΅¬μ‘°ν™”ν•¨μœΌλ‘œμ¨ 효율적으둜 관리할 수 있게 λ§Œλ“  μžλ£Œκ΅¬μ‘°μ΄λ‹€. 즉, κ·œμΉ™μ„ λ§Œλ“¦μœΌλ‘œμ¨ μ œν•œμ„ λ‘”λ‹€λŠ” 것이 핡심이닀.
  • ν•œ λ§ˆλ””λ‘œ, μŠ€νƒμ€ 자유λ₯Ό μ œν•œν•΄ μˆœμ„œ 보μž₯κ³Ό νš¨μœ¨μ„ μ–»λŠ” 자료ꡬ쑰둜 이해 ν•  수 있음.
  • μŠ€νƒμ€ 기본적으둜 push(μ‚½μž…), pop(μ‚­μ œ), peek(맨 μœ„ κ°’ 확인) 이 μ„Έ κ°€μ§€ μ—°μ‚°λ§Œ μ œκ³΅ν•œλ‹€.
  • κ·Έ μ™Έ μž„μ˜μ˜ μœ„μΉ˜μ— μ ‘κ·Όν•˜κ±°λ‚˜ 쀑간 데이터λ₯Ό μ‚­μ œν•˜λŠ” 것은 ν—ˆμš©λ˜μ§€ μ•ŠμŒ
  • μ΄λŸ¬ν•œ μ œν•œ λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ 관리가 간단해지고, 연산도 효율적이게 됨. ( 즉, μ œν•œμ€ 자료ꡬ쑰의 핡심인 것이닀. )
  • 데이터듀 μ‚¬μ΄μ˜ 관계λ₯Ό κ΅¬μ‘°ν™”ν•œκ²ƒμ΄ 자료ꡬ쑰이며, 좔상 μžλ£Œν˜•μ„ ν†΅ν•΄μ„œ λ°μ΄ν„°λ“€μ˜ μ‚¬μ΄μ˜ 관계λ₯Ό μ •μ˜ν•˜κ³  μžˆλ‹€.

(6) Pop/Push μ—°μ‚°μ˜ μ‹€ν–‰

  • 1. CreateStack(3): 제일 μ΄ˆκΈ°μƒνƒœλ‘œ 3개의 곡간을 κ°€μ§€λŠ” Stack 이 λ§Œλ“€μ–΄μ§.
  • 2. Push(stack, 'S'): 제일 첫 번째 μœ„μΉ˜μ— 'S' 데이터가 λ“€μ–΄κ°€κ²Œ λœλ‹€.
  • 3. Push(stack, 'T'): 두 번째 μœ„μΉ˜μ— λ“€μ–΄κ°€κ²Œ λœλ‹€.
  • 4. Pop(stack): 제일 λ§ˆμ§€λ§‰ μœ„μΉ˜ 즉, top의 μœ„μΉ˜μ— μžˆλŠ” 'T' 의 값이 μ‚­μ œλ˜λ©΄μ„œ 'T' 데이터λ₯Ό λ°˜ν™˜λ°›λŠ”λ‹€.
  • 5. Push(stack, R): ν•΄λ‹Ή stack top 에 'R' μ‚½μž…
  • 6. Push(stack, 'P'): 'P' μ‚½μž… ( 이 λΆ€λΆ„μ—μ„œ Stack 의 곡간인 3칸이 λ‹€ 차버림. )
  • 7. Push(stack, 'Q'): QλŠ” μ‚½μž…μ΄ λ˜μ§€μ•ŠλŠ”λ‹€. μ΄μœ λŠ”, 좔상 μžλ£Œν˜• 섀계 즉, ADT 섀계에 μ˜ν•œ μ œμ•½μœΌλ‘œ λ§‰νž˜.
  • μ„€κ³„μ‹œμ μ—μ„œ μ—°μ†λœ λ©”λͺ¨λ¦¬ 곡간을 미리 크기λ₯Ό μ •ν•΄λ†“μœΌλ©΄ 할당이 ν•œ λ²ˆμ— λλ‚˜λ―€λ‘œ λ©”λͺ¨λ¦¬ 관리에 νš¨μœ¨μ μ΄λΌμ„œ
  • μŠ€νƒμ΄ LIFO ꡬ쑰둜 λ™μž‘ν•œλ‹€λŠ” 것은 μ œν•œλœ μ—°μ‚° κ·œμΉ™μ„ κ°–λŠ” 뜻이며, λ§Œμ•½ μ œν•œ 없이 계속 λŠ˜μ–΄λ‚œλ‹€λ©΄, ν”„λ‘œκ·Έλž¨μ—μ„œ 예기치 λͺ»ν•œ λ©”λͺ¨λ¦¬ μ‚¬μš© 증가 즉, λ¬΄ν•œ μŠ€νƒμœΌλ‘œ 인해 μ‹œμŠ€ν…œμ΄ λΆˆμ•ˆμ •ν•΄μ§ˆ 수 있기 λ•Œλ¬Έμž„.
  • 결과적으둜 Stack μ—μ„œλŠ” StackIsFull / StackIsEmpty 와 같은 연산을 톡해 μ•ˆμ „μ„±μ„ ν™•λ³΄ν•˜κ³  있음.

(7) StackIsFull / StackIsEmpty μ—°μ‚°

  • StackIsFull: μŠ€νƒμ΄ 미리 μ •ν•΄μ§„ μ΅œλŒ€ ν¬κΈ°κΉŒμ§€ 데이터λ₯Ό μ±„μš΄ μƒνƒœμ—μ„œ Push λ₯Ό μ‹œλ„ν•  λ•Œ λΆˆλ¦¬μ–Έ κ°’ 리턴
  • StackIsEmpty: μŠ€νƒμ— 데이터가 ν•˜λ‚˜λ„ μ—†λŠ” μƒνƒœμ—μ„œ Pop μ΄λ‚˜ Peek λ₯Ό μ‹œλ„ν•  λ•Œ λΆˆλ¦¬μ–Έ κ°’ 리턴

βœ… 3. μŠ€νƒμ˜ μ‘μš©

(1) μŠ€νƒμ˜ λ‹€μ–‘ν•œ μ‘μš©

  • λ³€μˆ˜μ— λŒ€ν•œ λ©”λͺ¨λ¦¬μ˜ ν• λ‹Ήκ³Ό μˆ˜μ§‘μ„ μœ„ν•œ μ‹œμŠ€ν…œ μŠ€νƒ
  • μ„œλΈŒλ£¨ν‹΄ 호좜 관리λ₯Ό μœ„ν•œ μŠ€νƒ: ν•¨μˆ˜ ν˜ΈμΆœ μ‹œ λ°˜ν™˜ μ£Όμ†Œλ₯Ό μŠ€νƒμ— μ €μž₯(push)ν•˜κ³ , ν•¨μˆ˜κ°€ λλ‚˜λ©΄ μŠ€νƒμ—μ„œ κΊΌλ‚΄(pop) ν•΄λ‹Ή μœ„μΉ˜λ‘œ λŒμ•„κ°€ μ‹€ν–‰μ„ μ΄μ–΄κ°€λŠ” κ΅¬μ‘°κ°€ Call Stack μ΄λ©°, μš΄μ˜μ²΄μ œκ°€ μŠ€νƒμ„ μœ„ν•œ λ©”λͺ¨λ¦¬ κ³΅κ°„을 ν• λ‹Ήμ„ ν•΄μ€€λ‹€.
  • μ—°μ‚°μžλ“€ κ°„μ˜ μš°μ„ μˆœμœ„μ— μ˜ν•΄ 계산 μˆœμ„œκ°€ κ²°μ •λ˜λŠ” μˆ˜μ‹ 계산
  • μΈν„°λŸ½νŠΈμ˜ μ²˜λ¦¬μ™€ λ˜λŒμ•„κ°ˆ λͺ…λ Ή μˆ˜ν–‰ 지점을 μ €μž₯ν•˜κΈ° μœ„ν•œ μŠ€νƒ
  • 컴파일러, μˆœν™˜ 호좜 관리

βœ… 4. μŠ€νƒμ˜ μ—°μ‚°

  • μŠ€νƒμ˜ μ—°μ‚° κ΅¬ν˜„ν•˜λŠ” 방법에 κ΄€ν•œ λ‚΄μš©μž„
  • top: μŠ€νƒμ—μ„œ κ°€μž₯ λ§ˆμ§€λ§‰μ— μ‚½μž…λœ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” κ°’μž„.

(1) μŠ€νƒμ˜ μ‚­μ œ μ—°μ‚°

// < --a : μ „μœ„ κ°μ†Œ >
int a = 5;
int b = --a; // a = 4, b = 4

// < a-- : ν›„μœ„ κ°μ†Œ >
int a = 5;
int b = a--; // b = 5, a = 4
  • --a (μ „μœ„ κ°μ†Œ): λ¨Όμ € a 의 값을 1 쀄이고 κ·Έ λ‹€μŒ, 쀄어든 κ°’μ˜ μ‹μ˜ κ²°κ³Όκ°’μœΌλ‘œ μ‚¬μš©
  • a-- (ν›„μœ„ κ°μ†Œ): λ¨Όμ € ν˜„μž¬ a 의 값을 μ‹μ˜ κ²°κ³Όκ°’μœΌλ‘œ μ‚¬μš©ν•˜λ©° κ·Έ λ‹€μŒ, a λ₯Ό 1 μ€„μž„
  • 즉, 연산을 ν•˜κ³  λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠλƒ, 연산을 ν•˜μ§€ μ•Šκ³  κ°’λ§Œ λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠλƒμ˜ μ°¨μ΄μž„.
  • 'top--' μ—μ„œ μ‚¬μš©λœ '--' μ—°μ‚°μžμ˜ μœ„μΉ˜μ— 따라 μ—°μ‚°μ˜ μ μš©μˆœμ„œκ°€ λ‹¬λΌμ§ˆ 수 있음.
  • top--: top 값을 1 κ°μ†Œμ‹œν‚€λŠ” 연산을 μ˜λ―Έν•¨.
  • 즉, μŠ€νƒμ—μ„œ 데이터λ₯Ό ν•˜λ‚˜ μ‚­μ œ(pop)ν•œ ν›„, top을 μ•„λž˜λ‘œ μ΄λ™μ‹œν‚€λŠ” 것을 μ˜λ―Έν•¨.

[ μŠ€νƒμ˜ 생성 μ—°μ‚° ]

[ μŠ€νƒμ˜ μ‚­μ œ μ—°μ‚° ]

[ μŠ€νƒμ˜ μ‚½μž… μ—°μ‚° ]

[ 정리 ]

  • μΆ”μƒμžλ£Œν˜• 즉, μžλ£Œκ΅¬μ‘°κ°€ 좔상화 된 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ λ‚΄μš©μ΄λΌκ³  λ³Ό 수 있음.

βœ… 5. μ‚¬μΉ™μ—°μ‚°μ‹μ˜ μ „μœ„, ν›„μœ„, μ€‘μœ„ ν‘œν˜„

(1) μˆ˜μ‹μ˜ 계산

  • μ—°μ‚°μžμ˜ 계산 μš°μ„ μˆœμœ„λ₯Ό 생각해야 함
  • ex) A + B * C + D -> ((A + (B * C)) + D)
  • μ΄λŸ¬ν•œ μš°μ„ μˆœμœ„ 계산은 μ‚¬λžŒμ€ ν•œ λ²ˆμ— λ‚˜λˆ μ„œ ν•  수 μžˆμ§€λ§Œ, μ»΄ν“¨ν„°λŠ” 전체λ₯Ό λͺ»λ³΄μ§€λ§Œ 방법이 있음.
  • μ»΄ν“¨ν„°λŠ” μ™Όμͺ½λΆ€ν„° 였λ₯Έμͺ½μœΌλ‘œ μž…λ ₯이 되기 λ•Œλ¬Έμ— μš°μ„ μˆœμœ„ νŒŒμ•…μ΄ 어렀움 ( μŠ€νƒμ„ ν™œμš© 함 )

(2) μˆ˜μ‹μ˜ ν‘œκΈ° 방법

[ μ€‘μœ„ ν‘œκΈ°λ²• (infix notation) ]

  • μ—°μ‚°μžλ₯Ό ν”Όμ—°μ‚°μž 사이에 ν‘œκΈ°ν•˜λŠ” 방법
  • A + B
  • μ‚¬λžŒμ΄ 읽고 μ΄ν•΄ν•˜κΈ°λŠ” μ‰½μ§€λ§Œ, 컴퓨터 μž…μž₯μ—μ„œλŠ” μ—°μ‚°μž μš°μ„ μˆœμœ„μ™€ κ΄„ν˜Έ 처리λ₯Ό 해석해야 ν•΄μ„œ λ³΅μž‘ν•¨.

[ μ „μœ„ ν‘œκΈ°λ²• (prefix notation) ]

  • μ—°μ‚°μžλ₯Ό ν”Όμ—°μ‚°μž μ•žμ— ν‘œκΈ°ν•˜λŠ” 방법
  • +AB

[ ν›„μœ„ ν‘œκΈ°λ²• (postfix notation) ]

  • μ—°μ‚°μžλ₯Ό ν”Όμ—°μ‚°μžμ˜ 뒀에 ν‘œκΈ°ν•˜λŠ” 방법
  • AB+ : A와 Bλ₯Ό λ”ν•˜κ² λ‹€λŠ” μ—°μ‚°μž„
  • κ΄„ν˜Έκ°€ ν•„μš” μ—†μŒ (μš°μ„ μˆœμœ„κ°€ ν‘œκΈ° 방식 μ•ˆμ— 이미 반영이 됨)
  • 컴퓨터가 μŠ€νƒμ„ μ‚¬μš©ν•΄μ„œ κ³„μ‚°ν•˜κΈ° 맀우 간단해짐

(3) ν›„μœ„ ν‘œκΈ°λ²•

  • μ€‘μœ„ ν‘œκΈ°λ²•μ€ μš°μ„ μˆœμœ„μ™€ κ΄„ν˜Έλ₯Ό 해석해야 ν•΄μ„œ λ³΅μž‘ν•˜μ§€λ§Œ, ν›„μœ„ ν‘œκΈ°λ²•μ€ μŠ€νƒλ§ŒμœΌλ‘œ λ°”λ‘œ 계산이 κ°€λŠ₯함.
// μ˜ˆμ‹œ: AB+ (ν›„μœ„ ν‘œκΈ°λ²•)
// A -> push
stack: [A]
// B -> push
stack: [A, B]
// + -> pop 2개 꺼냄 (B, A) -> A + B 계산 -> κ²°κ³Ό push
stack: [A+B]
// μ΅œμ’… κ²°κ³Ό: A + B
  • κ·Έλž˜μ„œ μ€‘μœ„ ν‘œκΈ°λ²•μ„ ν›„μœ„ ν‘œκΈ°λ²•μœΌλ‘œ λ°”κΎΈκ²Œ λœλ‹€. 즉, μ‚¬λžŒμ΄ μ“°κΈ° 쒋은 μˆ˜μ‹μ„ 컴퓨터가 κ³„μ‚°ν•˜κΈ° 쒋은 μˆ˜μ‹μœΌλ‘œ λ³€ν™˜

  • 즉, 첫번째 μˆ˜μ‹μ€ μ€‘μœ„ ν‘œκΈ°λ²• 이며, μ•„λž˜λ‘œ 갈수둝 ν›„μœ„ ν‘œκΈ°λ²•μœΌλ‘œ λ³€κ²½ ( 컴퓨터가 μ•Œμ•„λ³΄κΈ° μ‰½κ²Œ )
  • B + K λŠ” BK+, /D λ‚˜λˆ„κΈ° μ—°μ‚° λ˜ν•œ D/ 둜 μŠ€νƒν˜•μ‹μœΌλ‘œ μ •μ˜

(4) μ€‘μœ„ ν‘œκΈ°μ‹μ˜ ν›„μœ„ ν‘œκΈ°μ‹ λ³€ν™˜ 방법

  • λ¨Όμ € μ€‘μœ„ ν‘œκΈ°μ‹μ„ μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„λ₯Ό κ³ λ €ν•˜μ—¬(ν”Όμ—°μ‚°μž, μ—°μ‚°μž, ν”Όμ—°μ‚°μž)의 ν˜•νƒœλ‘œ κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ€Œ
  • 각 κ³„μ‚°λ­‰μΉ˜λ₯Ό λ¬Άκ³  μžˆλŠ” κ΄„ν˜Έ μ•ˆμ—μ„œ μ—°μ‚°μžλ₯Ό κ³„μ‚°λ­‰μΉ˜μ˜ κ°€μž₯ 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚΄
  • 각 κ³„μ‚°λ­‰μΉ˜λ₯Ό ν•˜λ‚˜μ˜ ν”Όμ—°μ‚°μžλ‘œ κ³ λ €ν•˜μ—¬ μœ„λ₯Ό λ°˜λ³΅ν•¨
  • κ΄„ν˜Έλ₯Ό λͺ¨λ‘ μ œκ±°ν•¨ ( μŠ€νƒμ— λ„£κ³  2κ°œμ”© pop ν•˜λŠ” 방식 )
1. ν”Όμ—°μ‚°μž(숫자, λ³€μˆ˜) → μŠ€νƒμ— push
2. μ—°μ‚°μž → μŠ€νƒμ—μ„œ 2개 pop → 계산 → κ²°κ³Όλ₯Ό λ‹€μ‹œ push
3. λκΉŒμ§€ λ‹€ μ²˜λ¦¬ν•˜λ©΄ → μŠ€νƒμ— μ΅œμ’… κ²°κ³Ό 1개만 λ‚¨μŒ
  • 즉, ν•˜λ‚˜μ”© μ²˜λ¦¬ν•˜λ©΄μ„œ, 쀑간 κ²°κ³Όλ₯Ό 계속 μŠ€νƒμ— μŒ“μ•„λ‚˜κ°€λŠ” λ°©μ‹μž„.

[ 정리 ]

  • κ²°κ΅­ ν•΄λ‹Ή μ€‘μœ„ ν‘œκΈ°μ‹κ³Ό ν›„μœ„ ν‘œκΈ°μ‹ λ³€ν™˜ 방법은 μŠ€νƒμ˜ μ‘μš©μ— 이런게 μ”ŒμΈλ‹€λŠ” 것을 μ•Œλ €μ£ΌκΈ° μœ„ν•¨μž„.
  • κ²°κ΅­ μ€‘μœ„λ‚˜ ν›„μœ„ ν‘œκΈ°μ‹μ˜ κ°œλ…λ“€μ€ μΈν„°ν”„λ¦¬ν„°λ‚˜ μ»΄νŒŒμΌλŸ¬μ—μ„œ μ΄μš©λ˜λŠ” λŠλ‚Œ

(5) ν›„μœ„ ν‘œκΈ°μ‹μ˜ 계산 μ•Œκ³ λ¦¬μ¦˜ ( μŠ€νƒ μ‘μš© )

  • 데이터λ₯Ό λ°›μ•„μ„œ μ €μž₯ν•  λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™” κ³Όμ •

  • λ°˜λ³΅λ¬Έμ„ ν†΅ν•΄μ„œ exp[i] ( ν›„μœ„ ν‘œκΈ°μ‹ ) 의 값듀을 ν•˜λ‚˜μ”© ν”Όμ—°μ‚°μžμΈμ§€ 쑰건문을 톡해 체크
  • λ§Œμ•½ ν”Όμ—°μ‚°μžμΈ κ²½μš°μ—λŠ” push λ₯Ό 톡해 stack 에 값을 ν•˜λ‚˜μ”© 채움

  • μœ„μ˜ 쑰건문이 μ΄μ–΄μ ΈμžˆλŠ” 뢀뢄이며, else λ§Œμ•½ μ—°μ‚°μžμΈ κ²½μš°μ—λŠ” 즉, +-*/ 인 κ²½μš°μ— 싀행됨.
  • 즉, symbol λ³€μˆ˜μ— ν”Όμ—°μ‚°μžκ°€ λ“€μ–΄κ°€ μžˆλŠ” κ²½μš°μ— else 문이 μ‹€ν–‰ 됨.
  • oper2 , oper1 각 λ³€μˆ˜μ— pop() 을 톡해 stack μ—μ„œ 값을 λ‘κ°œ μ œκ±°ν•˜λ©΄μ„œ 리턴을 λ°›μ•„ λ³€μˆ˜μ— 할당을 함.
  • ν•΄λ‹Ή symbol λ³€μˆ˜μ— ν”Όμ—°μ‚°μž
  • switch 문을 톡해 symbol ν”Όμ—°μ‚°μžκ°€ 어떀건지 νŒŒμ•…ν•œ λ’€ 쑰건에 맞게 연산을 μˆ˜ν–‰ν•¨
  • μ΅œμ’…μ μΈ return pop(); 은 λͺ¨λ“  λ°˜λ³΅λ¬Έμ„ μˆ˜ν–‰ν•œ λ’€ μˆ˜μ‹μ˜ λ‚΄μš©μ΄ λΉ„μ—ˆλ‹€. 즉, λ°°μ—΄μ˜ λͺ¨λ“  값을 λ³Έ κ²½μš°μ— 해당됨.
  • 결둠은 λͺ¨λ“  λ°˜λ³΅λ¬Έμ„ μˆ˜ν–‰ν–ˆμœΌλ‹ˆ, μ΅œμ’… 결과값이 λ‚˜μ˜¨ μƒνƒœμΌκ±°μž„. 즉, pop() 을 ν•¨μœΌλ‘œμ¨ μ΅œμ’… 값을 λ½‘μ•„μ„œ 리턴을 ν•΄μ€Œ.

[ 정리 ]

  • ν•΄λ‹Ή μ•Œκ³ λ¦¬μ¦˜μ€ C ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ μ½”λ“œλ‘œ κ΅¬ν˜„ν•œ λ‚΄μš©μ„ κΈ°λ°˜ν•¨.

'πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅ > πŸ”’μžλ£Œκ΅¬μ‘°' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[자료ꡬ쑰] 4κ°• - 큐  (0) 2025.09.02
[자료ꡬ쑰] 2κ°• - λ°°μ—΄  (3) 2025.08.22
[자료ꡬ쑰] 1κ°• - μžλ£Œκ΅¬μ‘°λž€ 무엇인가?  (0) 2025.08.21
'πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅/πŸ”’μžλ£Œκ΅¬μ‘°' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [자료ꡬ쑰] 4κ°• - 큐
  • [자료ꡬ쑰] 2κ°• - λ°°μ—΄
  • [자료ꡬ쑰] 1κ°• - μžλ£Œκ΅¬μ‘°λž€ 무엇인가?
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (169)
      • πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅ (35)
        • βš™οΈμ»΄ν“¨ν„°μ˜ 이해 (11)
        • πŸ’»μ»΄ν“¨ν„°κ³Όν•™ 개둠 (5)
        • πŸ”’μžλ£Œκ΅¬μ‘° (4)
        • πŸŒμœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ… (11)
        • πŸ›οΈμ„Έκ³„μ˜μ •μΉ˜μ™€κ²½μ œ (3)
        • πŸ–₯️컴퓨터과학과 (1)
      • πŸ› οΈBackend (58)
        • πŸ“šλ°±μ—”λ“œ 곡뢀 (4)
        • β˜•Java (23)
        • 🌳Spring (13)
        • βš™οΈC (2)
        • ⚑Python (13)
        • JavaScript (1)
        • πŸ›’οΈDatabase (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • πŸ“œHTTP (7)
      • πŸš€DevOps (1)
      • β›ΊμŠ€νŒŒλ₯΄νƒ€μ½”λ”©ν΄λŸ½ (64)
      • 정보 (2)
      • 정리가 ν•„μš”ν•œ κΈ€ (2)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    파이썬
    spring
    Spring Framework
    컴파일러
    μœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ…κ°œλ‘ 
    λ°©μ†‘λŒ€
    Java
    μž…μΆœλ ₯
    Python
    ν΄λΌμš°λ“œ
    자료ꡬ쑰
    λ°°μ—΄
    λ°©ν†΅λŒ€
    μœ λΉ„μΏΌν„°μŠ€
    μŠ€ν”„λ§
    μ»΄ν“¨ν„°μ˜ 이해
    운영체제
    μœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ…
    λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅
    μžλ°”
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.1
junbin2
[자료ꡬ쑰] 3κ°• - μŠ€νƒ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”