[SWEA-4865] 글자 수

ego2·2023년 1월 29일
0
post-thumbnail

링크 : SWEA-4865

문제 조건

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

💡아이디어

밑에 처음 작성한 실패 코드인다.
두번째 테스트케이스 부터 실패하길래 디버깅 해봤더니 str1에서 중복된 숫자를 고려하지 않아 갯수만큼 배수로 출력되기 때문이였다.

T = int(input())

for test_case in range(1, T+1):
    str1 = input()
    str2 = input()

    cnt_dict = {}
    for i in range(len(str1)):
        cnt_dict[str1[i]] = 0
    
    for i in range(len(str1)):
        for j in range(len(str2)):
            if str2[j] == str1[i]:  # str1 중복을 피해줄 방법??
                cnt_dict[str1[i]] += 1

    print("#{} {}" .format(test_case, max(cnt_dict.values())))

🧑‍💻PASS 코드

T = int(input())

for test_case in range(1, T+1):
    str1 = input()
    str2 = input()

    cnt_dict = {}
    for i in range(len(str1)):
        cnt_dict[str1[i]] = 0
    
    for i in range(len(str1)):
        cnt = 0
        for j in range(len(str2)):
            if str2[j] == str1[i]:
                cnt += 1
                cnt_dict[str1[i]] = cnt

    print("#{} {}" .format(test_case, max(cnt_dict.values())))
profile
Talk is cheap. Show me the code.

0개의 댓글