ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 9996 ν•œκ΅­μ΄ 그리울 땐 μ„œλ²„μ— μ ‘μ†ν•˜μ§€ with Python
    PS 2022. 6. 29. 21:27
    728x90
    λ°˜μ‘ν˜•

    πŸ“Œ BOJ 9996 ν•œκ΅­μ΄ 그리울 땐 μ„œλ²„μ— μ ‘μ†ν•˜μ§€

    πŸ’‘ 쑰건

    1. μ„ μ˜μ΄λŠ” ν•œκ΅­μ— λ‘κ³ μ˜¨ μ„œλ²„μ— μ ‘μ†ν•΄μ„œ 디렉토리 μ•ˆμ— λ“€μ–΄μžˆλŠ” 파일 이름을 λ³΄λ©΄μ„œ 그리움을 잊기둜 ν–ˆλ‹€.
      맀일 λ°€, 파일 이름을 λ³΄λ©΄μ„œ 파일 ν•˜λ‚˜ν•˜λ‚˜μ— μ–½νžŒ 사연을 κΈ°μ–΅ν•˜λ©΄μ„œ ν•œκ΅­μ„ μƒκ°ν•˜κ³  μžˆμ—ˆλ‹€.
      ν•œκ΅­μ— μžˆλŠ” μ„œλ²„κ°€ λ§κ°€μ‘Œκ³ , κ·Έ κ²°κ³Ό νŠΉμ • νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” 파일 이름을 적절히 좜λ ₯ν•˜μ§€ λͺ»ν•˜λŠ” 버그가 생겼닀.
    1. νŒ¨ν„΄μ€ μ•ŒνŒŒλ²³ μ†Œλ¬Έμž μ—¬λŸ¬ κ°œμ™€ λ³„ν‘œ(*) ν•˜λ‚˜λ‘œ 이루어진 λ¬Έμžμ—΄μ΄λ‹€.
      파일 이름이 νŒ¨ν„΄μ— μΌμΉ˜ν•˜λ €λ©΄, νŒ¨ν„΄μ— μžˆλŠ” λ³„ν‘œλ₯Ό μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œ 이루어진 μž„μ˜μ˜ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•΄ 파일 이름과 κ°™κ²Œ λ§Œλ“€ 수 μžˆμ–΄μ•Ό ν•œλ‹€.
    1. λ³„ν‘œλŠ” 빈 λ¬Έμžμ—΄λ‘œ λ°”κΏ€ μˆ˜λ„ μžˆλ‹€.
      예λ₯Ό λ“€μ–΄, "abcd", "ad", "anestonestod"λŠ” λͺ¨λ‘ νŒ¨ν„΄ "a*d"와 μΌμΉ˜ν•œλ‹€. ν•˜μ§€λ§Œ, "bcd"λŠ” μΌμΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
    1. νŒ¨ν„΄κ³Ό 파일 이름이 λͺ¨λ‘ μ£Όμ–΄μ‘Œμ„ λ•Œ, 각각의 파일 이름이 νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ μ•„λ‹Œμ§€λ₯Ό κ΅¬ν•˜λŠ” 문제
    1. 첫째 쀄에 파일의 개수 N이 주어진닀. (1 ≀ N ≀ 100)
      λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” 100을 λ„˜μ§€ μ•ŠμœΌλ©°, λ³„ν‘œλŠ” λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό 끝에 μžˆμ§€ μ•Šλ‹€.
      λ‹€μŒ N개 μ€„μ—λŠ” 파일 이름이 주어진닀.
    1. 총 N개의 쀄에 κ±Έμ³μ„œ, μž…λ ₯으둜 주어진 i번째 파일 이름이 νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λ©΄ "DA", μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ "NE"λ₯Ό 좜λ ₯ν•œλ‹€.
    1. κ΅¬ν˜„, λ¬Έμžμ—΄, 브루트포슀 μœ ν˜•μ˜ 문제

    πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

    from sys import stdin
    
    n = int(stdin.readline())
    pattern = stdin.readline().rstrip()
    
    
    def match_tf(p, s):
        p = p.split('*')
        start_m, end_m = p[0], p[1]
        if s[:len(start_m)] == start_m and s[-len(end_m):] == end_m and len(''.join(p)) <= len(s):
            return True
        return False
    
    
    for _ in range(n):
        string = stdin.readline().rstrip()
        if match_tf(pattern, string):
            print('DA')
        else:
            print('NE')

    πŸ”– 예제 및 μ‹€ν–‰κ²°κ³Ό

    예제

    6
    h*n
    huhovdjestvarnomozedocisvastan
    honijezakon
    atila
    je
    bio
    hun

    μ‹€ν–‰κ²°κ³Ό

    DA
    DA
    NE
    NE
    NE
    DA

    ⌨️ 문제 풀이

    1. λ¬Έμ œμ—μ„œ 보면 νŒ¨ν„΄μ€ μ•ŒνŒŒλ²³ μ†Œλ¬Έμžμ™€ λ³„ν‘œ ν•œ 개둜 μ΄λ£¨μ–΄μ Έμžˆλ‹€λŠ” 정보가 μžˆλ‹€.
      νŒ¨ν„΄μ€ *λ₯Ό κΈ°μ€€μœΌλ‘œν•΄μ„œ split ν•΄μ£Όκ³ , νŒ¨ν„΄ μ‹œμž‘κ³Ό νŒ¨ν„΄ 끝으둜 κ΅¬λΆ„ν•œλ‹€.
    1. λ‚˜λˆˆ νŒ¨ν„΄μ˜ μ‹œμž‘κ³Ό 끝을 λΉ„κ΅ν•˜μ—¬ μ•„λž˜μ— ν•΄λ‹Ήλ˜λŠ”μ§€ ν™•μΈν•œλ‹€.
      1. 1.μž…λ ₯받은 λ¬Έμžμ—΄μ„ μ‹œμž‘ νŒ¨ν„΄μ˜ 길이만큼 μž˜λΌμ„œ μ‹œμž‘ νŒ¨ν„΄κ³Ό 같은지 ν™•μΈν•œλ‹€.
      2. 2.μž…λ ₯받은 λ¬Έμžμ—΄μ„ 끝 νŒ¨ν„΄κΉŒμ§€ μž˜λΌμ„œ λ‚˜λˆˆ 끝 νŒ¨ν„΄κ³Ό 같은지 ν™•μΈν•œλ‹€.
      3. 3.νŒ¨ν„΄μ„ μ˜λ―Έν•˜λŠ” *을 μ œμ™Έν•œ λ¬Έμžμ—΄μ˜ 길이가 μž…λ ₯ 받은 λ¬Έμžμ—΄μ˜ 길이보닀 μž‘κ±°λ‚˜ 같은지 ν™•μΈν•œλ‹€.
    1. μœ„ 세가지 쑰건에 ν•΄λ‹Ήλ˜μ§€ μ•ŠλŠ” 경우, match_tf ν•¨μˆ˜μ—μ„œ False λ₯Ό return ν•œλ‹€.
    1. match_tf κ°€ False 일 경우, 'DA' 좜λ ₯
      match_tf κ°€ Ture 일 경우, 'NE' 좜λ ₯
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.