deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

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

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim

λ§žμ™œν‹€

[python] λ°±μ€€ - 1148. 단어 λ§Œλ“€κΈ°
Algorithm Problem/Python

[python] λ°±μ€€ - 1148. 단어 λ§Œλ“€κΈ°

2021. 9. 6. 16:33
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • λ”•μ…”λ„ˆλ¦¬μ— 퍼즐의 각 μ•ŒνŒŒλ²³μ„ ν‚€, κ·Έ μ•ŒνŒŒλ²³μ˜ κ°œμˆ˜μ™€ μ‚¬μš©λœ 횟수의 λ”•μ…”λ„ˆλ¦¬λ₯Ό 벨λ₯˜λ‘œ κ°€μ§„λ‹€.


  • 퍼즐에 μžˆλŠ” μ•ŒνŒŒλ²³μœΌλ‘œ 낱말을 λ§Œλ“€ 수 μžˆλ‹€λ©΄ νΌμ¦μ—μ„œ μ‚¬μš©λ  μ•ŒνŒŒλ²³μ˜ used_cnt λ₯Ό +1 ν•΄μ€€λ‹€.
  • μœ„μ™€ 같은 κ²°κ³Όκ°€ λ‚˜μ˜€κ²Œ 되고, used_cnt κ°€ κ°€μž₯ 적은 κ°’λ“€, κ°€μž₯ λ§Žμ€ 값듀을 μ•ŒνŒŒλ²³ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 좜λ ₯ν•΄μ€€λ‹€.

 

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

import pprint

import sys

input = sys.stdin.readline


# 인풋 λ°›μ•„μ„œ 단어 or 퍼즐 λ”°λ‘œ λ°°μ—΄λ‘œ λ§Œλ“œλŠ” ν•¨μˆ˜ (λ‘λ²ˆ λ°˜λ³΅ν• κ±° κ°™μ•„μ„œ ν•¨μˆ˜λ‘œ λ§Œλ“¦)
def input_func(arr, sign):
    arr = []
    while True:
        input_value = input().strip()
        if input_value == sign:
            break

        arr.append(input_value)
    return arr


words = input_func([], '-')
puzzles = input_func([], '#')

# print(words)
# print(puzzles)

for puzzle in puzzles:
    # print()
    puzzle_dict = {}  # κ³„μ‚°ν•œ κ²°κ³Όλ₯Ό μŒ“μ„ dict
    for p in puzzle:  # νΌμ¦μ—μ„œ 단어 ν•˜λ‚˜μ”© cnt: 단어 갯수, used_cnt: μ‚¬μš©λ  수 μžˆλŠ” word에 λŒ€ν•΄μ„œ μ‚¬μš©λ˜λŠ” 개수
        if not puzzle_dict.get(p):
            puzzle_dict[p] = {'cnt': 1, 'used_cnt': 0}
        else:
            puzzle_dict[p]['cnt'] += 1

    # pprint.pprint(puzzle_dict)

    for word in words:
        for w in set(word):
            w_cnt = word.count(w)
            # print(w_cnt)
            if not puzzle_dict.get(w) or w_cnt > puzzle_dict[w]['cnt']:  # μ•ŒνŒŒλ²³μ΄ 퍼즐에 μ—†κ±°λ‚˜, 퍼즐에 μžˆλŠ” μ•ŒνŒŒλ²³ κ°œμˆ˜λ³΄λ‹€ 더 많으면 μ‚¬μš© λͺ»ν•¨
                break

        else:  # μ‚¬μš©λ  수 μžˆλŠ” wordλŠ” 각 μ•ŒνŒŒλ²³μ˜ used_cnt λ₯Ό +1 ν•΄μ€€λ‹€.
            for w in set(word):
                puzzle_dict[w]['used_cnt'] += 1

    # pprint.pprint(puzzle_dict)
    
    
    # λ‹΅ κ΅¬ν•˜κΈ°
    min_cnt, max_cnt = 1e9, 0
    min_words, max_words = [], []
    for key, val in puzzle_dict.items():
        if val['used_cnt'] < min_cnt:
            min_words = [key]
            min_cnt = val['used_cnt']
        elif val['used_cnt'] == min_cnt:
            min_words.append(key)

        if val['used_cnt'] > max_cnt:
            max_words = [key]
            max_cnt = val['used_cnt']
        elif val['used_cnt'] == max_cnt:
            max_words.append(key)

    # print(min_words, min_cnt)
    # print(max_words, max_cnt)

    print(''.join(sorted(min_words)), min_cnt, ''.join(sorted(max_words)), max_cnt)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

 

 

 

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] λ°±μ€€ - 1013. Contact  (0) 2021.09.08
[python] λ°±μ€€ - 1174. μ€„μ–΄λ“œλŠ” 숫자  (0) 2021.09.07
[python] λ°±μ€€ - 1105. νŒ”  (0) 2021.09.05
[python] λ°±μ€€ - 13023. ABCDE  (0) 2021.09.04
[python] λ°±μ€€ - 2615. 였λͺ©  (2) 2021.09.03
    'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [python] λ°±μ€€ - 1013. Contact
    • [python] λ°±μ€€ - 1174. μ€„μ–΄λ“œλŠ” 숫자
    • [python] λ°±μ€€ - 1105. νŒ”
    • [python] λ°±μ€€ - 13023. ABCDE
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

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