J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

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

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[Programmers] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 μ‹ κ³  κ²°κ³Ό λ°›κΈ° - 파이썬(Python)
Algorithm/πŸ“— Programmers

[Programmers] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 μ‹ κ³  κ²°κ³Ό λ°›κΈ° - 파이썬(Python)

728x90

문제 μ„€λͺ…

μ‹ μž…μ‚¬μ› λ¬΄μ§€λŠ” κ²Œμ‹œνŒ λΆˆλŸ‰ 이용자λ₯Ό μ‹ κ³ ν•˜κ³  처리 κ²°κ³Όλ₯Ό λ©”μΌλ‘œ λ°œμ†‘ν•˜λŠ” μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜λ € ν•©λ‹ˆλ‹€. 무지가 κ°œλ°œν•˜λ €λŠ” μ‹œμŠ€ν…œμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • 각 μœ μ €λŠ” ν•œ λ²ˆμ— ν•œ λͺ…μ˜ μœ μ €λ₯Ό μ‹ κ³ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • μ‹ κ³  νšŸμˆ˜μ— μ œν•œμ€ μ—†μŠ΅λ‹ˆλ‹€. μ„œλ‘œ λ‹€λ₯Έ μœ μ €λ₯Ό κ³„μ†ν•΄μ„œ μ‹ κ³ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν•œ μœ μ €λ₯Ό μ—¬λŸ¬ 번 μ‹ κ³ ν•  μˆ˜λ„ μžˆμ§€λ§Œ, λ™μΌν•œ μœ μ €μ— λŒ€ν•œ μ‹ κ³  νšŸμˆ˜λŠ” 1회둜 μ²˜λ¦¬λ©λ‹ˆλ‹€.
  • k번 이상 μ‹ κ³ λœ μœ μ €λŠ” κ²Œμ‹œνŒ 이용이 μ •μ§€λ˜λ©°, ν•΄λ‹Ή μœ μ €λ₯Ό μ‹ κ³ ν•œ λͺ¨λ“  μœ μ €μ—κ²Œ μ •μ§€ 사싀을 λ©”μΌλ‘œ λ°œμ†‘ν•©λ‹ˆλ‹€.
    • μœ μ €κ°€ μ‹ κ³ ν•œ λͺ¨λ“  λ‚΄μš©μ„ μ·¨ν•©ν•˜μ—¬ λ§ˆμ§€λ§‰μ— ν•œκΊΌλ²ˆμ— κ²Œμ‹œνŒ 이용 μ •μ§€λ₯Ό μ‹œν‚€λ©΄μ„œ μ •μ§€ 메일을 λ°œμ†‘ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ 전체 μœ μ € λͺ©λ‘μ΄ ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 이상 μ‹ κ³ λ‹Ήν•˜λ©΄ 이용 μ •μ§€)인 경우의 μ˜ˆμ‹œμž…λ‹ˆλ‹€.

μœ μ € ID μœ μ €κ°€ μ‹ κ³ ν•œ ID μ„€λͺ…
"muzi" "frodo" "muzi"κ°€ "frodo"λ₯Ό μ‹ κ³ ν–ˆμŠ΅λ‹ˆλ‹€.
"apeach" "frodo" "apeach"κ°€ "frodo"λ₯Ό μ‹ κ³ ν–ˆμŠ΅λ‹ˆλ‹€.
"frodo" "neo" "frodo"κ°€ "neo"λ₯Ό μ‹ κ³ ν–ˆμŠ΅λ‹ˆλ‹€.
"muzi" "neo" "muzi"κ°€ "neo"λ₯Ό μ‹ κ³ ν–ˆμŠ΅λ‹ˆλ‹€.
"apeach" "muzi" "apeach"κ°€ "muzi"λ₯Ό μ‹ κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

각 μœ μ €λ³„λ‘œ μ‹ κ³ λ‹Ήν•œ νšŸμˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μœ μ € ID μ‹ κ³  λ‹Ήν•œ 횟수
"muzi" 1
"frodo" 2
"apeach" 0
"neo" 2

μœ„ μ˜ˆμ‹œμ—μ„œλŠ” 2번 이상 μ‹ κ³ λ‹Ήν•œ "frodo"와 "neo"의 κ²Œμ‹œνŒ 이용이 μ •μ§€λ©λ‹ˆλ‹€. μ΄λ•Œ, 각 μœ μ €λ³„λ‘œ μ‹ κ³ ν•œ 아이디와 μ •μ§€λœ 아이디λ₯Ό μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μœ μ € ID μœ μ €κ°€ μ‹ κ³ ν•œ ID μ •μ§€λœ ID
"muzi" ["frodo", "neo"] ["frodo", "neo"]
"frodo" ["neo"] ["neo"]
"apeach" ["muzi", "frodo"] ["frodo"]
"neo" μ—†μŒ μ—†μŒ

λ”°λΌμ„œ "muzi"λŠ” 처리 κ²°κ³Ό 메일을 2회, "frodo"와 "apeach"λŠ” 각각 처리 κ²°κ³Ό 메일을 1회 λ°›κ²Œ λ©λ‹ˆλ‹€.

이용자의 IDκ°€ λ‹΄κΈ΄ λ¬Έμžμ—΄ λ°°μ—΄ id_list, 각 μ΄μš©μžκ°€ μ‹ κ³ ν•œ 이용자의 ID 정보가 λ‹΄κΈ΄ λ¬Έμžμ—΄ λ°°μ—΄ report, μ •μ§€ 기쀀이 λ˜λŠ” μ‹ κ³  횟수 kκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 각 μœ μ €λ³„λ‘œ 처리 κ²°κ³Ό 메일을 받은 횟수λ₯Ό 배열에 λ‹΄μ•„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œμ‚¬ν•­

  • 2 ≤ id_list의 길이 ≤ 1,000
    • 1 ≤ id_list의 μ›μ†Œ 길이 ≤ 10
    • id_list의 μ›μ†ŒλŠ” 이용자의 idλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄μ΄λ©° μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
    • id_listμ—λŠ” 같은 아이디가 μ€‘λ³΅ν•΄μ„œ λ“€μ–΄μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 1 ≤ report의 길이 ≤ 200,000
    • 3 ≤ report의 μ›μ†Œ 길이 ≤ 21
    • report의 μ›μ†ŒλŠ” "이용자id μ‹ κ³ ν•œid"ν˜•νƒœμ˜ λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄ "muzi frodo"의 경우 "muzi"κ°€ "frodo"λ₯Ό μ‹ κ³ ν–ˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.
    • idλŠ” μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
    • 이용자id와 μ‹ κ³ ν•œidλŠ” 곡백(슀페이슀)ν•˜λ‚˜λ‘œ κ΅¬λΆ„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
    • 자기 μžμ‹ μ„ μ‹ κ³ ν•˜λŠ” κ²½μš°λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • 1 ≤ k ≤ 200, kλŠ” μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • return ν•˜λŠ” 배열은 id_list에 λ‹΄κΈ΄ id μˆœμ„œλŒ€λ‘œ 각 μœ μ €κ°€ 받은 κ²°κ³Ό 메일 수λ₯Ό λ‹΄μœΌλ©΄ λ©λ‹ˆλ‹€.

https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

πŸ’‘ 풀이 및 μ½”λ“œ

from collections import defaultdict

def solution(id_list, report, k):
    answer = []
    report_who = defaultdict(set)
    for rep in report:
        id, report_id = rep.split()
        report_who[report_id].add(id)

    restricted_id = []
    for id in id_list:
        if len(report_who[id]) >= k:
            restricted_id.append(id)

    for id in id_list:
        count = 0
        for rid in restricted_id:
            if id in report_who[rid]:
                count += 1
        answer.append(count)
    
    return answer

이 문제의 핡심은 λ™μΌν•œ μœ μ €μ— λŒ€ν•œ μ‹ κ³  νšŸμˆ˜λŠ” 1회둜 μ²˜λ¦¬λœλ‹€λŠ” 것이닀. λ‹¨μˆœνžˆ μ‹ κ³  νšŸμˆ˜κ°€ k회 이상인 κ²½μš°κ°€ μ•„λ‹Œ μ‹ κ³ ν•œ μ‚¬λžŒμ΄ kλͺ… 이상일 경우λ₯Ό νŒλ‹¨ν•΄ κ²Œμ‹œνŒ μ΄μš©μ„ μ •μ§€μ‹œμΌœμ•Ό ν•œλ‹€. λ”°λΌμ„œ 각 μœ μ €λ³„λ‘œ μ‹ κ³  λ‹Ήν•œ IDλ₯Ό μ €μž₯ν•  λ•Œ(report_who) λ™μΌν•œ μœ μ €μ— λŒ€ν•΄μ„œλŠ” μ‹ κ³ κ°€ ν•œλ²ˆλ§Œ μ €μž₯될 수 μžˆλ„λ‘ set을 μ‚¬μš©ν–ˆλ‹€.

728x90

'Algorithm > πŸ“— Programmers' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Programmers] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 성격 μœ ν˜• κ²€μ‚¬ν•˜κΈ° - 파이썬(Python)  (1) 2022.09.02
    'Algorithm/πŸ“— Programmers' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [Programmers] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 성격 μœ ν˜• κ²€μ‚¬ν•˜κΈ° - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

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