coding test

[파이썬] 4865. 글자수

잔망루피 2021. 1. 11. 17:34

swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.


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

입력 출력
3
XYPV
EOGGXYPVSY
STJJ
HOFSTJPVPP
ZYJZXZTIBSDG
TTXGZYJZXZTIBSDGWQLW
#1 2
#2 1
#3 3

 

🎀 나의 풀이

 

from collections import Counter
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    str1=Counter(input())
    str2=Counter(input())
    cnt=0
    
    for i in str1.keys():
        if i in str2:
            if cnt < str2.get(i):
                cnt=str2.get(i)
                
    print(f"#{test_case} {cnt}")

 

Counter로 문자열의 문자 갯수를 센다.

str2에 str1 문자가 있다면 get을 이용해서 value를 꺼낸다. cnt와 비교해서 cnt보다 크면 cnt를 갱신한다. 

 

🎨 다른사람 풀이

 

def solution(pettern, string):
    answer = 0
    for p in pettern:
        temp = 0
        for s in string:
            if p == s:
                temp += 1
        answer = max(answer, temp)
    return answer


def main():
    test_cases = int(input())
    for test_case in range(test_cases):
        pettern, string = input(), input()
        print(f"#{test_case + 1} {solution(pettern, string)}")


if __name__ == '__main__':
    main()

 

이중 for문으로 pettern과 string을 비교한다.

answer과 temp중 더 큰 값을 answer에 넣는다.

 

TC = int(input())

for tc in range(1, TC+1):
    str1 = input()
    str2 = input()
    sub_cnt, cnt = 0, 0

    for i in str1:
        for j in str2:
            if i == j:
                sub_cnt += 1
        if sub_cnt > cnt:
            cnt = sub_cnt
        sub_cnt = 0
    print("#%d %d"%(tc, cnt))

 

문자열 str1과 str2를 반복하면서 문자 i와 j가 같다면 sub_cnt를 1증가시킨다.

sub_cnt가 cnt보다 더 크면 cnt에 sub_cnt를 할당한다.

반응형

'coding test' 카테고리의 다른 글

[파이썬] 4866. 괄호검사  (0) 2021.01.12
[파이썬] 4869. 종이붙이기  (0) 2021.01.11
[파이썬] 4861. 회문  (0) 2021.01.08
[파이썬] 4864. 문자열 비교  (0) 2021.01.08
[파이썬] 4843. 특별한 정렬  (0) 2021.01.08