ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] ๋ฐฑ์ค€ 19583 ์‹ธ์ด๋ฒ„๊ฐœ๊ฐ•์ดํšŒ (Set)
    ๐Ÿ’ป Algorithm/Python 2022. 7. 2. 15:27

     

    ๐Ÿ“Œ ๋ฌธ์ œ

    ๋ณด์˜์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์•„๋ฆฌ HI-ARC๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค.

     

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

     

    ํ•˜์ง€๋งŒ, ๋ฏธํŠœ๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

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

     

    ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ํ•™ํšŒ์›์˜ ์ž…์žฅ ํ™•์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ•™ํšŒ์›์˜ ์ž…์žฅ ์—ฌ๋ถ€๋Š” ๊ฐœ๊ฐ•์ดํšŒ๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ ์ด์ „์— ๋Œ€ํ™”๋ฅผ ํ•œ ์ ์ด ์žˆ๋Š” ํ•™ํšŒ์›์˜ ๋‹‰๋„ค์ž„์„ ๋ณด๊ณ  ์ฒดํฌํ•œ๋‹ค. ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•˜์ž๋งˆ์ž ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๋‚จ๊ธด ํ•™ํšŒ์›๋„ ์ œ ์‹œ๊ฐ„์— ์ž…์žฅ์ด ํ™•์ธ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.


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


    ๋‹จ, 00:00๋ถ€ํ„ฐ๋Š” ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด๋ฉฐ, ๊ฐœ๊ฐ•์ดํšŒ ์ŠคํŠธ๋ฆฌ๋ฐ ๋๋‚œ ์‹œ๊ฐ„ ์ดํ›„๋กœ ๋‚จ๊ฒจ์ ธ ์žˆ๋Š” ์ฑ„ํŒ… ๊ธฐ๋ก์€ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆฌ๋ฐ ์˜์ƒ์˜ ์ฑ„ํŒ… ๊ธฐ๋ก์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

     

    ์ด ๋•Œ, ์ž…์žฅ๋ถ€ํ„ฐ ํ‡ด์žฅ๊นŒ์ง€ ๋ชจ๋‘ ํ™•์ธ๋œ ํ•™ํšŒ์›์€ ์ „๋ถ€ ๋ช‡ ๋ช…์ธ๊ฐ€?

    ์ž…๋ ฅ

    ์ฒซ๋ฒˆ์งธ ์ค„์—๋Š” ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ S, ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ๋๋‚ธ ์‹œ๊ฐ„ E, ๊ฐœ๊ฐ•์ดํšŒ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋๋‚ธ ์‹œ๊ฐ„ Q๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (00:00 ≤ S < E < Q ≤ 23:59) ๊ฐ ์‹œ๊ฐ„์€ HH:MM์˜ ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

     

    ๋‘๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” HI-ARC์—์„œ ๋ฐฉ์†กํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์˜์ƒ์˜ ์ฑ„ํŒ… ๊ธฐ๋ก๋“ค์ด ์‹œ๊ฐ„์ˆœ์œผ๋กœ ์ฃผ์–ด์ง€๋Š”๋ฐ, (์‹œ๊ฐ„) (ํ•™ํšŒ์› ๋‹‰๋„ค์ž„)์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ํ•™ํšŒ์›์˜ ๋‹‰๋„ค์ž„์€ ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž, ๊ทธ๋ฆฌ๊ณ  ํŠน์ˆ˜ ๊ธฐํ˜ธ(., _, -)๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด๋ฉฐ ์ตœ๋Œ€ 20๊ธ€์ž์ด๋‹ค.

     

    ๋ชจ๋“  ์ฑ„ํŒ… ๊ธฐ๋ก์€ ๊ฐœ๊ฐ•์ดํšŒ๊ฐ€ ์ผ์–ด๋‚œ ๋‚ ์— ๋ฐœ์ƒํ•œ ์ฑ„ํŒ… ๊ธฐ๋ก์ด๋‹ค. ์ฆ‰ 00:00~23:59์˜ ์‹œ๊ฐ„๋งŒ ์ฃผ์–ด์ง„๋‹ค. ์ฑ„ํŒ… ๊ธฐ๋ก์€ 10๋งŒ ์ค„์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

    ์ถœ๋ ฅ

    ์ถœ์„์ด ํ™•์ธ๋œ ํ•™ํšŒ์›์˜ ์ธ์› ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

    ์˜ˆ์ œ ์ž…๋ ฅ 1

    22:00 23:00 23:30
    21:30 malkoring
    21:33 tolelom
    21:34 minjae705
    21:35 hhan14
    21:36 dicohy27
    21:40 906bc
    23:00 906bc
    23:01 tolelom
    23:10 minjae705
    23:11 hhan14
    23:20 dicohy27

    ์˜ˆ์ œ ์ถœ๋ ฅ 1

    5

    ์˜ˆ์ œ ์ž…๋ ฅ 2

    06:00 12:00 18:00
    06:00 shinyo17
    06:00 kimchist
    06:00 swoon
    06:00 kheee512
    06:00 Green55
    09:00 kimchist
    11:59 shinyo17
    12:00 kimchist
    17:59 swoon
    17:59 swoon
    18:00 kheee512
    18:01 swoon
    18:01 Green55
    18:01 kheee512
    18:01 swoon
    18:21 jinius36
    18:40 jeongyun1206

    ์˜ˆ์ œ ์ถœ๋ ฅ 2

    3

     


     

    ๐Ÿ“Œ ํ’€์ด

    import sys
    input = sys.stdin.readline
    
    start, end, stream = input().split()
    start = int(start[:2] + start[3:])
    end = int(end[:2] + end[3:])
    stream = int(stream[:2] + stream[3:])
    
    attend = set()
    cnt = 0
    
    while True:
        try:
            time, name = input().split()
            time = int(time[:2] + time[3:])
            if time <= start:
                attend.add(name)
            elif end <= time <= stream and name in attend:
                attend.remove(name)
                cnt += 1
        except:
            break
    
    print(cnt)
    • start: ๊ฐœ๊ฐ•์ดํšŒ ์‹œ์ž‘ ์‹œ๊ฐ„
    • end: ๊ฐœ๊ฐ•์ดํšŒ ์ข…๋ฃŒ ์‹œ๊ฐ„
    • stream: ๊ฐœ๊ฐ•์ดํšŒ ์ŠคํŠธ๋ฆฌ๋ฐ ์ข…๋ฃŒ ์‹œ๊ฐ„
    • attend: ์ถœ์„๋ถ€
    • time: ์ฑ„ํŒ… ์‹œ๊ฐ„
    • name: ์ฑ„ํŒ… ์ž‘์„ฑ์ž

     


    input ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋ฅผ ๋•Œ ์ž…๋ ฅ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

    while True:
        try:
            time, name = input().split()
        except:
            break

    while True๋ฌธ์œผ๋กœ ์ž…๋ ฅ์„ ๊ณ„์† ๋ฐ›๋‹ค๊ฐ€ EOF๋ฅผ ๋งŒ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ except๋ฌธ์œผ๋กœ ์บ์น˜ํ•ด break๋กœ ์ž…๋ ฅ์„ ์ค‘๋‹จ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

     

     

    list์™€ set์˜ ์†๋„ ์ฐจ์ด

     

    (์ฒซ ์‹œ๋„)
    attend๋ฅผ list๋กœ ๋งŒ๋“ค๊ณ  append๋กœ ์ถ”๊ฐ€, remove๋กœ ์‚ญ์ œํ–ˆ๋”๋‹ˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค.

     

    (๋‹ค์Œ ์‹œ๋„)
    ์ค‘๋ณต์ฒ˜๋ฆฌ๋„ ํ•ด์ค˜์•ผ ํ•˜๋‹ˆ๊นŒ attend๋ฅผ set์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜๋„ ๊ดœ์ฐฎ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— set์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  add๋กœ ์ถ”๊ฐ€, remove๋กœ ์‚ญ์ œํ–ˆ๋”๋‹ˆ ์ •๋‹ต์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

    ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ ๊ฑด์ง€ ๊ถ๊ธˆํ•ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค.

    • list ์‹œ๊ฐ„๋ณต์žก๋„
      append: O(1)
      remove: O(N)
    • set ์‹œ๊ฐ„๋ณต์žก๋„
      add: O(1)
      remove: O(1)
      ์‚ฌ์ง„์ถœ์ฒ˜ https://lsh424.tistory.com/59

     

     

    ๋Œ“๊ธ€

Designed by Tistory.