본문 바로가기
Problem Solving

[Python][백준 1148] 단어 만들기

by tls1107 2024. 4. 2.
728x90
반응형

https://www.acmicpc.net/problem/1148

 

1148번: 단어 만들기

어떤 신문엔 이러한 퍼즐이 있다. 3x3의 표에 영문자가 하나씩 있으며, 이 영문자들을 사용해서 최대한 많은 영단어를 만드는 것이 목표이다. 예를 들면, 아래의 퍼즐판에서는 'LINT', 'TILL', 'BRILLIAN

www.acmicpc.net


/*
신경써야 할 부분은 바로 :
1. 퍼즐에 있는 모든 글자들에 대해 각 글자마다 가능한 단어의 수 체크
2. 가장 많은 단어와 가장 적은 단어를 기록 및 출력
3. 단어의 수 체크할때 ASCII 코드 값 활용해서 배열 활용

간단한 문자열 문제
*/

import sys

input_func = sys.stdin.readline
input_words = []

while True:
    word = input_func().rstrip()
    if word == '-':
        break
    input_words.append(word)

while True:
    board = input_func().rstrip()
    letter_count = [0] * 26
    if board == '#':
        break
    board_letter_count = [0] * 26
    for letter in board:
        board_letter_count[ord(letter) - 65] += 1

    for input_word in input_words:
        word_letter_count = [0] * 26
        for letter in input_word:
            word_letter_count[ord(letter) - 65] += 1
        flag = True
        for i in range(26):
            if board_letter_count[i] < word_letter_count[i]:
                flag = False
        if flag:
            for letter in set(input_word):
                letter_count[ord(letter) - 65] += 1

    min_count = 10**9
    min_list = []
    max_count = 0
    max_list = []

    for letter in set(board):
        count = letter_count[ord(letter) - 65]
        if min_count == count:
            min_list.append(letter)
        elif count < min_count:
            min_count = count
            min_list = [letter]
        if max_count == count:
            max_list.append(letter)
        elif count > max_count:
            max_count = count
            max_list = [letter]
    print(''.join(sorted(min_list)), min_count, ''.join(sorted(max_list)), max_count)

 

풀 때 어려웠던 점 또는 느낀점 :

아스키코드 값을 활용할 생각을 하면

딕셔너리를 안 써도 풀 수 있어 편하다. 

그래프 탐색은 다양하게 풀어 보았으니 문자열 문제들을

많이 풀어볼 생각이다. 최근에 번역 프로그램 개발과 병행하려니

조금 정신 없지만 하는데까진 해봐야겠다

728x90
반응형

'Problem Solving' 카테고리의 다른 글

[Python][BOJ 22352] 항체 인식  (0) 2025.01.08
[Python][백준 2668] 숫자고르기  (0) 2025.01.07
[Python][백준 5972] 택배 배송  (0) 2024.04.01
[Python][백준 1719] 등산  (1) 2024.03.28
[Python][백준 1719] 택배  (0) 2024.03.26

댓글