๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
BackEnd๐ŸŒฑ/Etc

[๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜] - Hacker News Algorithm

by dkswnkk 2024. 1. 16.

๊ฐœ์š”

๊ณต๊ฐœ๋œ Ranking Algorithm์—๋Š” ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์„ ๋ณ„ํ•˜๊ฑฐ๋‚˜, ์ถ”์ฒœ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ‰์ ์— ๋”ฐ๋ผ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ๋„ Hacker News Ranking Algorithm, Reddit Ranking Algorithm, ๊ทธ๋ฆฌ๊ณ  Highly Rated๊ฐ€ ๋Œ€ํ‘œ์ ์ธ๋ฐ, ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด๋“ค ์ค‘์—์„œ๋„ ์กฐํšŒ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Hacker News Algorithm์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
 

Hacker News Algorithm์ด๋ž€?

Hacker News Algorithm์€ Y Combinator๊ฐ€ ์šด์˜ํ•˜๋Š” ๋‰ด์Šค ๊ณต์œ  ์‚ฌ์ดํŠธ์ธ Hacker News์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฒŒ์‹œ๋ฌผ์˜ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์— '์ถ”์ฒœ(upvote)'์„ ํ•˜๋Š” ํ–‰๋™๊ณผ ๊ฒŒ์‹œ๋ฌผ์ด ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š”๋ฐ ๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ p๋Š” ์ถ”์ฒœ์œผ๋กœ ํ•œ์ •ํ–ˆ์ง€๋งŒ ์กฐํšŒ์ˆ˜, ๋Œ“๊ธ€ ์ˆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • p: ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ์ถ”์ฒœ ์ˆ˜. 1์„ ๋นผ๋Š” ์ด์œ ๋Š” ์ž‘์„ฑ์ž ์ž์‹ ์˜ ๊ธ€์„ ์ถ”์ฒœํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•จ
  • t: ๊ฒŒ์‹œ๋ฌผ์ด ๊ฒŒ์‹œ๋œ ์‹œ๊ฐ„๊ณผ ํ˜„์žฌ ์‹œ๊ฐ„ ์‚ฌ์ด์˜ ์ฐจ์ด. ์ด ๊ฐ’์€ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, ๊ฒŒ์‹œ๋ฌผ์ด 2์‹œ๊ฐ„ ์ „์— ๊ฒŒ์‹œ๋˜์—ˆ๋‹ค๋ฉด t๋Š” 2๊ฐ€๋œ๋‹ค.
  • G: ์ค‘๋ ฅ ๊ณ„์ˆ˜๋กœ, ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๊ฒŒ์‹œ๋ฌผ์˜ ์ˆœ์œ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Hacker News์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 1.8์˜ ๊ฐ’์„ ์‚ฌ์šฉ

Hacker News์˜ ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹จ์ˆœํžˆ ์ถ”์ฒœ์„ ๋งŽ์ด ๋ฐ›๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹ˆ๋ผ, ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ์ˆœ์œ„ ๋ณ€๋™์„ ๊ณ ๋ คํ•˜์—ฌ ๋”์šฑ ๊ณต์ •ํ•œ ์ˆœ์œ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ ฅ ๊ณ„์ˆ˜์˜ ๊ฐ’์„ ์กฐ์ •ํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๊ฒŒ์‹œ๋ฌผ์˜ ์ˆœ์œ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 

์™œ ์‚ฌ์šฉํ• ๊นŒ?

"์ธ๊ธฐ ๊ฒŒ์‹œ๊ธ€"์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ๋‹จ์ˆœํžˆ ๊ฒŒ์‹œ๊ธ€์˜ ์กฐํšŒ์ˆ˜๊ฐ€ ๋†’์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ์ˆœ๊ฐ„ ๊ฐ€์žฅ ๋งŽ์€ ๊ด€์‹ฌ์„ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ด€์ ์—์„œ, ์ธ๊ธฐ์ˆœ ๊ฒŒ์‹œ๊ธ€์„ ์กฐํšŒ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ TOP 3๋ฅผ ์„ ์ •ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ „์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€ ์ค‘์—์„œ ์กฐํšŒ์ˆ˜๊ฐ€ TOP1์ธ ๊ฒŒ์‹œ๊ธ€์ด 100, TOP2๊ฐ€ 50, ๊ทธ๋ฆฌ๊ณ  TOP3๊ฐ€ 30์ด๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ์ด๋•Œ ์ง€๊ธˆ ๋ง‰ ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ๊ธฐ ์‹œ์ž‘ ํ•œ ์ƒˆ๋กœ์šด ๊ฒŒ์‹œ๊ธ€์ด ๋“ฑ์žฅํ–ˆ๊ณ , ๊ธˆ๋ฐฉ ์กฐํšŒ์ˆ˜๊ฐ€ 10์ด ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ด ๊ฒŒ์‹œ๊ธ€์€ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ํฐ ๊ด€์‹ฌ์„ ๋ฐ›์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์กฐํšŒ์ˆ˜๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฉด ์•„์ง TOP3์ธ 30์„ ๋„˜์ง€ ๋ชปํ•ด ์ด ๊ฒŒ์‹œ๊ธ€์€ TOP3์— ํฌํ•จ๋˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ ์ œํ•œ์ด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์ „์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€๋“ค์€ ์ง€์†์ ์œผ๋กœ ๋…ธ์ถœ๋˜๋ฉด์„œ ์กฐํšŒ์ˆ˜๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๊ธฐ์—, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ธ๊ธฐ ๊ฒŒ์‹œ๊ธ€ ์ˆœ์œ„๋Š” ์œ ๋™์ ์ด์ง€ ์•Š๊ณ  ๊ณ ์ •๋˜์–ด ๋ฒ„๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Hacker News Algorithm์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ฉด ๋‹จ์ˆœํžˆ ์กฐํšŒ์ˆ˜๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ , ๊ฒŒ์‹œ๊ธ€์˜ ์ž‘์„ฑ ์‹œ๊ฐ„๋„ ๊ณ ๋ คํ•จ์œผ๋กœ์จ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 

์‹œ๊ฐํ™” ํ™•์ธ

์•„๋ž˜๋Š” ์ œ๊ฐ€ ์‹คํ—˜์„ ์œ„ํ•ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์€ ์ต์ˆ™์น˜ ์•Š์•„ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด๋Š” ์šฉ๋„๋กœ ์ž‘์„ฑํ–ˆ์Œ์„ ๊ฐ์•ˆํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์˜จ๋ผ์ธ IDE์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์‹œ๋ฉด ์†์‰ฝ๊ฒŒ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# ํ•ด์ปค๋‰ด์Šค ์ ์ˆ˜ ๊ณ„์‚ฐ ํ•จ์ˆ˜
def calculate_hn_score(views, hours_since_posted, gravity):
    return (views - 1) / pow((hours_since_posted + 2), gravity)

# ์กฐํšŒ์ˆ˜ ๊ฐ’
view_counts = [30, 60, 100]  # ๊ธฐ์กด ๊ฒŒ์‹œ๊ธ€๋“ค

# ์ค‘๋ ฅ ๊ฐ€์†๋„ ๊ฐ’
gravity_value = 0.8

# ์ ์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•œ DataFrame ์ƒ์„ฑ (0์‹œ๊ฐ„๋ถ€ํ„ฐ 48์‹œ๊ฐ„๊นŒ์ง€, 4์‹œ๊ฐ„ ๊ฐ„๊ฒฉ)
score_data = pd.DataFrame(index=np.arange(0, 49, 4))  # 0์‹œ๊ฐ„๋ถ€ํ„ฐ 48์‹œ๊ฐ„๊นŒ์ง€, 4์‹œ๊ฐ„ ๊ฐ„๊ฒฉ

# ๊ธฐ์กด ๊ฒŒ์‹œ๊ธ€๋“ค์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ
for views in view_counts:
    score_data[f'Views={views} with Algorithm'] = calculate_hn_score(views, score_data.index, gravity_value)
    score_data[f'Views={views} without Algorithm'] = views

# ์ƒˆ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ์ˆ˜ ๋ฐ ์ ์ˆ˜ ๊ณ„์‚ฐ (12์‹œ๊ฐ„ ์ดํ›„๋ถ€ํ„ฐ ์‹œ์ž‘)
new_item_views = 40
for time in score_data.index:
    if time >= 12:
        hours_since_new_item_posted = time - 12
        score_data.loc[time, f'New Item (Views={new_item_views}) after 12 hours'] = calculate_hn_score(new_item_views, hours_since_new_item_posted, gravity_value)
    else:
        score_data.loc[time, f'New Item (Views={new_item_views}) after 12 hours'] = np.nan

# ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
plt.figure(figsize=(15, 8))

# ๊ธฐ์กด ๊ฒŒ์‹œ๊ธ€๋“ค์˜ ๊ทธ๋ž˜ํ”„
for views in view_counts:
    plt.plot(score_data.index, score_data[f'Views={views} with Algorithm'], label=f'Views={views} with Algorithm', linewidth=2)
    plt.plot(score_data.index, score_data[f'Views={views} without Algorithm'], label=f'Views={views} without Algorithm', linestyle='--', linewidth=2)

# ์ƒˆ ๊ฒŒ์‹œ๊ธ€์˜ ๊ทธ๋ž˜ํ”„
plt.plot(score_data.index, score_data[f'New Item (Views={new_item_views}) after 12 hours'], label=f'New Item (Views={new_item_views}) after 12 hours', linewidth=2, linestyle=':', color='red')

# x, y ๋ ˆ์ด๋ธ”๊ณผ ์ œ๋ชฉ ์„ค์ •
plt.xticks(np.arange(0, 49, 4))
plt.xlabel('Hours Since Submission')
plt.ylabel('Score')
plt.title('Comparison of Item Exposure With and Without Hacker News Algorithm (0-48 Hours Interval)')
plt.legend()
plt.grid(True)
plt.show()

  • x์ถ• (Hours Since Submission): ๊ฒŒ์‹œ๋œ ์‹œ๊ฐ„๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • y์ถ• (Score): ๊ฒŒ์‹œ๊ธ€์˜ ํ•ด์ปค๋‰ด์Šค ์ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ์ˆ˜๋Š” ํ•ด์ปค๋‰ด์Šค์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
  • ์‹ค์„ : ๊ฐ ์‹ค์„ ์€ ์กฐํšŒ์ˆ˜๊ฐ€ 30, 60, 100์ธ ๊ธฐ์กด ๊ฒŒ์‹œ๊ธ€๋“ค์˜ ํ•ด์ปค๋‰ด์Šค ์ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ์ ์ˆ˜๋Š” ๊ฒŒ์‹œ ์‹œ๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ์ ์„ : ๊ฐ ์ ์„ ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์šฉ๋˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ๊ณ ์ •๋œ ์กฐํšŒ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ ์ „ํ›„์˜ ์ ์ˆ˜ ์ฐจ์ด๋ฅผ ํ•œ๋ˆˆ์— ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์„ : ์ด ์„ ์€ ์กฐํšŒ์ˆ˜๊ฐ€ 40์ธ ์ƒˆ ๊ฒŒ์‹œ๊ธ€์˜ ์ ์ˆ˜ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๊ธ€์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ์€ 12์‹œ๊ฐ„ ์ดํ›„๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋ฏ€๋กœ, ๊ทธ ์ด์ „ ์‹œ๊ฐ„์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํŒŒ์ด์ฌ์„ ์ด์šฉํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™”ํ•ด ๋ณด๋ฉด, ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€์˜ ์ ์ˆ˜๊ฐ€ ์ ์ฐจ ๊ฐ์†Œํ•˜๋ฉฐ, ๋น„๊ต์  ๋Šฆ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ์ง€๋งŒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐํšŒ์ˆ˜๊ฐ€ 40์ธ ์ƒˆ๋กœ์šด ๊ฒŒ์‹œ๊ธ€์ด ์ƒ์„ฑ๋œ ์งํ›„์—๋Š” ๊ธฐ์กด์˜ ์กฐํšŒ์ˆ˜๊ฐ€ 30, 60, 100์ธ ๊ฒŒ์‹œ๊ธ€์„ ๋ชจ๋‘ ์•ž์งˆ๋Ÿฌ TOP1์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์€ ๋‹ค์‹œ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ์ ์  ์ฒ˜์Œ์˜ ์ˆœ์œ„๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ๋ฐ€์ง‘๋œ ๋ถ€๋ถ„์„ ํ™•๋Œ€ํ•œ ์ฐจํŠธ์ž…๋‹ˆ๋‹ค.

 
 

๋งˆ๋ฌด๋ฆฌ

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

๋”ฐ๋ผ์„œ ์ด๋Ÿด ๋•Œ Hacker News Algorithm์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์„ ํƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 

์ฐธ๊ณ 

๋Œ“๊ธ€