반응형
4865. [파이썬 S/W 문제해결 기본] 3일차 - 글자수
[파이썬 S/W 문제해결 기본] 3일차 문제
2021.05.17 - [Algorithm] - SWEA 4861 회문 (python)
2021.05.17 - [Algorithm] - SWEA 4864 문자열 비교 (python)
2021.05.17 - [Algorithm] - SWEA 4865 글자수 (python)
문제
두 개의 문자열 str1과 str2가 주어진다. 문자열 str1에 포함된 글자들이 str2에 몇 개씩 들어있는지 찾고, 그중 가장 많은 글자의 개수를 출력하는 프로그램을 만드시오.
예를 들어 str1 = “ABCA”, str2 = “ABABCA”인 경우, str1의 A가 str2에 3개 있으므로 가장 많은 글자가 되고 3을 출력한다.
파이썬의 경우 딕셔너리를 이용할 수 있다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50
다음 줄부터 테스트 케이스 별로 길이가 N인 문자열 str1과 길이가 M인 str2가 각각 다른 줄에 주어진다. 5≤N≤100, 10≤M≤1000, N≤M
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
코드
T = int(input())
# 글자수를 세는 함수
def str_count(str1, str2):
# str1의 글자는 글자의 종류? 만 필요하고 str2에서 얼마나 있는지 세야한다.
# 때문에 str1의 글자수의 중복을 없애기 위해 set을 취한다음 다시 리스트를 해준다.
str_list = list(set(str1))
# 글자수를 세기 위한 딕셔너리 초기화
count_dict = {}
# 중복을 제거한 글자수를 반복
for ch in str_list:
# 각각의 글자수에 따른 개수를 딕셔너리에 초기화 해준다.
count_dict[ch] = 0
# str2를 검사한다
for s in str2:
# 만약 해당 글자와 같다면
if ch == s:
# 딕셔너리에 1을 더해준다.
count_dict[ch] += 1
# 최대값을 초기화 해준다.
max_value = 0
# str1이 담긴 리스트를 반복하면서
for ch in str_list:
# 만약 해당 글자의 개수가 최대값 보다 크다면 갱신
if count_dict.get(ch) > max_value:
max_value = count_dict.get(ch)
return max_value
for tc in range(1, T+1):
str1 = input()
str2 = input()
result = str_count(str1, str2)
print("#{} {}".format(tc, result))
반응형
'Algorithm' 카테고리의 다른 글
SWEA 4861 회문 (python) (0) | 2021.05.17 |
---|---|
SWEA 4864 문자열 비교 (python) (0) | 2021.05.17 |
BOJ 14916 거스름돈 (python) (0) | 2021.05.12 |
BOJ 14889 스타트와 링크 (python) (0) | 2021.05.12 |
BOJ 1181 단어정렬 (python) 파이썬 (0) | 2021.05.12 |