[SWEA] 4865. [파이썬 S/W 문제해결 기본] 3일차 - 글자수 [D2]

yunh·2022년 2월 17일
0

알고리즘 - SWEA 🐣

목록 보기
27/103
post-thumbnail

📚 문제

두 개의 문자열 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는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

str2에 str1의 문자열에 있는 문자 중 가장 많이 가지고 있는 문자를 출력하는 문제이다.

str1의 문자열 중 중복을 제거하면 편하니 str1을 set 자료형에 담아준다.

그리고 딕셔너리 자료형을 활용해 각각의 문자열을 key, 개수를 값으로 담아준다.

딕셔너리의 values()메서드를 활용해 value들을 순회하며 가장 큰 값을 출력한다.

📒 코드

# 글자수
T = int(input())
for tc in range(1, T+1):

    str1 = set(input())     # 중복 제거해서 set에 담는다.
    str2 = input()
    dict = {}
    for c in str1:  # 딕셔너리의 key에 중복 제거한 문자로 초기화 시켜준다.
        dict[c] = 0

    for c in str2:  # str2의 문자를 하나씩 확인
        if c in str1:   # 딕셔너리 안에 str2의 문자가 있으면 그 value에 1을 더한다.
            dict[c] += 1

    max_num = 0
    for v in dict.values(): # 딕셔너리의 value들을 순회하며 가장 큰 값을 찾는다.
        if v > max_num:
            max_num = v
    print(f'#{tc} {max_num}')

🔍 결과 : Pass

profile
passionate developer

0개의 댓글