Hiya_
개발자취🌱
Hiya_
Github
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (155) N
    • πŸ’»Backend (1) N
      • 라이징캠프 (6)
      • SSAFY | μ‹Έν”Ό (2)
      • μ‹ ν•œDS 금육SW 아카데미 (2)
    • πŸ“λ¬Έμ œ 풀이 (102)
      • 🧩Baekjoon (47)
      • 🧩Programmers (42)
      • 🧩SWExpertAcademy (10)
      • 🧩Softeer (3)
    • πŸ“‚Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • ✨Useful information (5)
    • πŸ”‘Algorithms (3)
    • πŸ™Git (2)

λΈ”λ‘œκ·Έ 메뉴

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

곡지사항

인기 κΈ€

νƒœκ·Έ

  • λ‚΄μž₯ν•¨μˆ˜
  • ν•΄μ»€μŠ€νŒŒλž­μ΄
  • 리슀트
  • mysql
  • 그리디
  • ν† μ΅κΈ°μΆœ
  • 완전탐색
  • μ •λ ¬
  • ν† μ΅μ μˆ˜
  • μ½”ν…Œ
  • Python
  • 2차원 λ°°μ—΄
  • sort
  • 토읡독학
  • BaekJoon
  • κ΅¬ν˜„
  • ν† μ΅μ‹œν—˜
  • ν‹°μŠ€ν† λ¦¬μ±Œλ¦°μ§€
  • ν† μ΅λ¬΄λ£Œμžλ£Œ
  • λ‹€μ΅μŠ€νŠΈλΌ
  • Union
  • 토읡곡뢀
  • μ˜€λΈ”μ™„
  • BFS
  • λ°±μ€€
  • ν•΄μ»€μŠ€ν† μ΅
  • greedy algorithm
  • UNION ALL
  • ν† μ΅λ¬΄λ£Œκ°•μ˜
  • 토읡RC

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬


Owner : κΉ€μ‹ μ˜
Naver Blog

hELLO Β· Designed By μ •μƒμš°.
Hiya_

개발자취🌱

πŸ”‘Algorithms

[μ•Œκ³ λ¦¬μ¦˜] μ‹œκ°„λ³΅μž‘λ„ κ΅¬ν•˜κΈ°

2023. 4. 4. 12:21

처음 μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜ 글을 μž‘μ„±ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€(두근)

μž‘λ…„(2022) μ΄λ§˜λ•Œμ―€ ν•™κ΅μ—μ„œ ν•™μŠ΅ν–ˆλ˜ μ•Œκ³ λ¦¬μ¦˜μ˜ μ‹œκ°„λ³΅μž‘λ„μ— κ΄€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

 

μ½”λ”©ν…ŒμŠ€νŠΈκ°€ μ΅μˆ™ν•΄μ§€λ©΄μ„œ νš¨μœ¨μ„±μ„ μš”κ΅¬ν•˜λŠ” λ¬Έμ œλ“€κ³Ό λ§žλ”±λœ¨λ¦¬κ²Œ λ˜μ—ˆλŠ”λ°,

μ΄λ•Œ μ•Œμ•„μ•Ό ν•  기초 κ°œλ…μ΄ λ°”λ‘œ μ‹œκ°„λ³΅μž‘λ„μž…λ‹ˆλ‹€.

 

 

λ‚΄κ°€ μ§  μ½”λ“œκ°€ μž…λ ₯ λŒ€λΉ„ μ–Όλ§ˆνΌμ˜ μ‹œκ°„μ΄ ν•„μš”ν•œκ°€λ₯Ό κ³„μ‚°ν•˜μ—¬

νš¨μœ¨μ„±μ„ νŒλ‹¨ν•˜κ³ , λΉ„νš¨μœ¨μ μ΄λΌλ©΄ μ–΄λ–€ 뢀뢄을 μˆ˜μ •ν• μ§€ 생각해 λ³Ό 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

 

 

λͺ©μ°¨

1. μ •μ˜ & ν‘œκΈ°λ²•

2. O(1)

2. O(N)

3. O(N²)

4. O(NlogN)

 


1. μ •μ˜ & ν‘œκΈ°λ²•

 

μœ„ν‚€ λ°±κ³Όμ—μ„œ μΈμš©ν•΄ 온 μ»΄ν“¨ν„°κ³Όν•™μ—μ„œ μ‹œκ°„λ³΅μž‘λ„μ˜ μ •μ˜

μž…λ ₯을 λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄ 길이의 ν•¨μˆ˜λ‘œμ„œ μž‘λ™ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μ·¨ν•΄ μ‹œκ°„μ„ μ •λŸ‰ν™”ν•˜λŠ” 것


λ‹€μŒμ€ μ‹œκ°„λ³΅μž‘λ„μ˜ 3κ°€μ§€ ν‘œν˜„λ²•μž…λ‹ˆλ‹€.

μ΅œμ•…μ˜ μ‹€ν–‰μ‹œκ°„ κ°μ†ŒλŠ” νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œν‚€λ―€λ‘œ λΉ…μ˜€ ν‘œν˜„λ²• μ€‘μ‹¬μœΌλ‘œ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ‹œκ°„λ³΅μž‘λ„ 발음 μ„€λͺ… ν‘œκΈ°λ²• μ˜ˆμ‹œ
Big-O λΉ…μ˜€ κ°€μž₯많이 μ‚¬μš©λ˜λŠ” ν‘œν˜„μœΌλ‘œ μ΅œμ•… μ‹€ν–‰μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€ O(N)
Ω μ˜€λ©”κ°€ μ΅œμƒ μ‹€ν–‰μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€ Ω(N)
Θ μ„Ένƒ€ 평균 μ‹€ν–‰μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€ Θ(N)

 

 

 

 

2. O(1)

a = 1
b = 2
print(a + b)

O(1)은 μ–΄λ–€ μž…λ ₯에도 항상 같은 μ‹œκ°„μ„ κ°–λŠ” 경우λ₯Ό λ§ν•œλ‹€.

μœ„ μ½”λ“œλ₯Ό 보면 a, b λ³€μˆ˜μ— λŒ€μž…μ—°μ‚° 2νšŒμ™€ print 좜λ ₯μ—°μ‚° 1회, a+b μ—°μ‚° 1회둜

총 4회 연산을 μˆ˜ν–‰ν•œλ‹€.

 

즉 O(4)둜 ν‘œν˜„λ  수 μžˆλŠ”λ° μƒμˆ˜ 값은 μ œμ™Έν•˜κ³  ν‘œν˜„ν•˜λ―€λ‘œ O(1)이 λœλ‹€.

 

 

 

 

 

3. O(N)

sum = 0

for i in range(N):
	sum += 1

O(N)은 μž…λ ₯κ³Ό λΉ„λ‘€ν•œ μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€.

sum = 0 λŒ€μž…μ—°μ‚° 1회, forλ¬Έ N회, sum += 1 N회둜

 

O(2N +1)둜 ν‘œν˜„ν•  수 μžˆλŠ”λ°

μ•žμ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ μƒμˆ˜ 값은 μ œμ™Έν•˜κ³  ν‘œν˜„ν•˜λ―€λ‘œ

ν•΄λ‹Ή μ½”λ“œλŠ” O(N)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°€μ§€κ³  μžˆλ‹€.

 

 

 

sum = 0

for i in range(1, N+1, 2):
	for j in range(i):
    		sum += 1

μœ„ μ½”λ“œλ₯Ό 보면 iκ°€ 1λΆ€ν„° iμ”© 컀지며 NκΉŒμ§€ λ°˜λ³΅ν•œλ‹€. 즉 N==5라면

1, 2, 4λ₯Ό, 즉 logN번 μˆ˜ν–‰ν•˜λŠ” 것이닀.

ν•΄λ‹Ή μˆ˜ν–‰λ§ˆλ‹€ jκ°€ i회 μˆ˜ν–‰λ˜λ―€λ‘œ 1+2+4+8+...(N/4)+(N/2)+N=2N

 

i==1 일 λ•Œ 1회

i==2 일 λ•Œ 2회

i==4 일 λ•Œ 4회

i==8 일 λ•Œ 8회

...

 

λͺ¨λ“  경우λ₯Ό ν•©μΉ˜λ©΄ 1+2+4+8+...(N/4)+(N/2)+N=2N (λ“±μ°¨μˆ˜μ—΄μ˜ ν•©) μ΄λ―€λ‘œ

μƒμˆ˜λ₯Ό μ œμ™Έν•œ O(N)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°–κ³ μžˆλ‹€.

 

 

 

 

4. O(N²)

sum = 0

for i in range(N):
	for j in range(N):
    		sum += 1

2쀑 for문은 μ „ν˜•μ μΈ O(N²) μ‹œκ°„λ³΅μž‘λ„ ν‘œν˜„μ΄λ‹€.

iκ°€ N회, jκ°€ iλ§ˆλ‹€ N회 μ΄λ―€λ‘œ N+N+N+....+N=N² 이닀.

sum도 j와 λ™μΌν•˜κ²Œ μˆ˜ν–‰λ˜λ―€λ‘œ μƒμˆ˜λ‘œ μ²˜λ¦¬λœλ‹€.

 

 

sum = 0

for i in range(N):
	for j in range(i):
    		sum += 1

이와같은 μ½”λ“œλŠ” μ‹œκ°„λ³΅μž‘λ„κ°€ μ–΄λ–»κ²Œ 될까?

μ•ˆμͺ½ for문이 i번만 μˆ˜ν–‰ν•˜λ―€λ‘œ O(N)보닀 μž‘μ„κΉŒ?

κ·Έλ ‡μ§€ μ•Šλ‹€.

 

같은 λ§₯락으둜 sum 연산을 μ œμ™Έν•˜κ³  생각해보면

iκ°€ N회, iλ§ˆλ‹€ jκ°€ i회 λ°˜λ³΅ν•˜λ©΄ 0+1+2+3+...+(N-1)=N*(N-1)/2이닀.

 

 

i==0 일 λ•Œ 0회

i==1 일 λ•Œ 1회

i==2 일 λ•Œ 2회

...

 

λͺ¨λ“  연산을 κ³„μ‚°ν–ˆμ„ λ•Œ N*(N-1)/2 (λ“±μ°¨μˆ˜μ—΄)μ΄λΌλŠ” κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

 

 

 

 

 

 

5. O(NlogN)

O(logN)은 μ΄μ§„νŠΈλ¦¬μ˜ μ „ν˜•μ  μ‹œκ°„λ³΅μž‘λ„μ΄λ‹€. 

μ΄μ§„νŠΈλ¦¬μ˜ μ‹œκ°„λ³΅μž‘λ„ 계산에 λŒ€ν•΄ 잘 정리해 놓은 이 글을 μ°Έκ³ ν•˜κΈ° λ°”λž€λ‹€.

 

 

sum = 0

for i in range(1, N+1, 2):
	for j in range(N):
    		sum += 1

μœ„ μ½”λ“œλ₯Ό 보면 iκ°€ 1λΆ€ν„° iμ”© 컀지며 NκΉŒμ§€ λ°˜λ³΅ν•œλ‹€. 즉 N==5라면

1, 2, 4λ₯Ό, 즉 logN번 μˆ˜ν–‰ν•˜λŠ” 것이닀.

ν•΄λ‹Ή μˆ˜ν–‰λ§ˆλ‹€ jκ°€ N회 μˆ˜ν–‰λ˜λ―€λ‘œ N+N+N+...+N=N*logN

 

κ²°κ΅­ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(NlogN)이 λœλ‹€.

 

 

 

 

 


REFERENCE

https://medium.com/humanscape-tech/%EC%BD%94%EB%93%9C%EC%9D%98-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0-b67dd8625966

 

μ½”λ“œμ˜ μ‹œκ°„ λ³΅μž‘λ„ κ³„μ‚°ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” νœ΄λ¨ΌμŠ€μΌ€μ΄ν”„ 인턴 Jasonμž…λ‹ˆλ‹€.

medium.com

https://ko.wikipedia.org/wiki/%EC%8B%9C%EA%B0%84_%EB%B3%B5%EC%9E%A1%EB%8F%84

 

μ‹œκ°„ λ³΅μž‘λ„ - μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전

μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전. λŸ¬λ‹ νƒ€μž„μ€ μ—¬κΈ°λ‘œ μ—°κ²°λ©λ‹ˆλ‹€. 맀체의 μž¬μƒ·μƒμ˜ μ‹œκ°„μ— λŒ€ν•΄μ„œλŠ” λŸ¬λ‹ νƒ€μž„ (맀체) λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹­μ‹œμ˜€. 계산 λ³΅μž‘λ„ μ΄λ‘ μ—μ„œ μ‹œκ°„ λ³΅μž‘λ„λŠ” 문제λ₯Ό ν•΄κ²°

ko.wikipedia.org

https://xodud2972.tistory.com/60

 

Python 51 - μ‹œκ°„λ³΅μž‘λ„, κ³΅κ°„λ³΅μž‘λ„, λΉ…μ˜€ν‘œκΈ°λ²• ( μ•Œκ³ λ¦¬μ¦˜ 곡뢀 )

λͺ©μ°¨ 1. μ‹œκ°„λ³΅μž‘λ„ 2. κ³΅κ°„λ³΅μž‘λ„ 3. μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬ μΈ‘μ • κ°œμš” λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯을 λ‚˜νƒ€λ‚΄λŠ” 척도이닀. λ³΅μž‘λ„λŠ” μ‹œκ°„ λ³΅μž‘λ„μ™€ 곡간 λ³΅μž‘λ„λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. μ‰½κ²Œ λ§ν•˜λ©΄ μ‹œκ°„ λ³΅μž‘λ„λŠ”

xodud2972.tistory.com

https://neos518.tistory.com/145

 

logN의 μ‹œκ°„ λ³΅μž‘λ„κ°€ λ‚˜μ˜€λŠ” 이유

ν”νžˆ μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄ logN의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό μ‹¬μ‹¬μΉ˜ μ•Šκ²Œ λ§Œλ‚˜κ²Œ λœλ‹€. 이미 λŒ€λ‹€μˆ˜μ˜ μ‚¬λžŒλ“€μ΄ 트리λ₯Ό μ‚¬μš©ν•  λ•Œ μ‹œκ°„ λ³΅μž‘λ„κ°€ 둜그 값이 λ‚˜μ˜¨λ‹€λŠ” 사싀에 λŒ€ν•΄μ„œ μ•Œκ³  μžˆμ„ 것이닀.

neos518.tistory.com

https://mathbang.net/609#gsc.tab=0

 

λ“±μ°¨μˆ˜μ—΄μ˜ ν•©, λ“±μ°¨μˆ˜μ—΄μ˜ ν•© 곡식

이번 κΈ€μ—μ„œλŠ” λ“±μ°¨μˆ˜μ—΄μ˜ 각 항을 λ”ν•œ λ“±μ°¨μˆ˜μ—΄μ˜ 합을 ꡬ할 κ±°μ˜ˆμš”. μ•„μ£Ό κ°„λ‹¨νžˆ μƒκ°λ§Œ 살짝 λ°”κΎΈλ©΄ λ“±μ°¨μˆ˜μ—΄μ˜ ν•© 곡식을 μœ λ„ν•  수 μžˆμ–΄μš”. 방법은 μ–΄λ ΅μ§€ μ•ŠμœΌλ‹ˆκΉŒ κ·Έ 원리λ₯Ό 금방 이해

mathbang.net

 

'πŸ”‘Algorithms' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[μ•Œκ³ λ¦¬μ¦˜] μ΅œμ†Œ μŠ€νŒ¨λ‹ 트리 μ•Œκ³ λ¦¬μ¦˜ | 크루슀칼/ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜  (0) 2023.05.29
[μ•Œκ³ λ¦¬μ¦˜] μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜ | λ‹€μ΅μŠ€νŠΈλΌ | ν”Œλ‘œμ΄λ“œ μ›Œμ…œ  (0) 2023.05.17
    'πŸ”‘Algorithms' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [μ•Œκ³ λ¦¬μ¦˜] μ΅œμ†Œ μŠ€νŒ¨λ‹ 트리 μ•Œκ³ λ¦¬μ¦˜ | 크루슀칼/ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜
    • [μ•Œκ³ λ¦¬μ¦˜] μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜ | λ‹€μ΅μŠ€νŠΈλΌ | ν”Œλ‘œμ΄λ“œ μ›Œμ…œ
    Hiya_
    Hiya_
    ν•˜μ–€ 천과 λ°”λžŒλ§Œ μžˆλ‹€λ©΄ μ–΄λ””λ“  갈 수 μžˆμ–΄

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