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 |
댓글