일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 헬스
- 칭기즈칸
- 테를지
- 울란바토르
- 교환학생
- algorithm
- LG글로벌챌린저
- ICT봉사단
- 한 줄로 서기
- 몽골
- 알고리즘
- 소프트웨어 아카데미
- 아부다비
- Python
- 파이썬
- 몽골요리
- 월드프렌즈
- 몽골 헬스장
- 초원
- 독일
- 코로나
- SWEA
- 월드프렌즈 ICT 봉사단
- 여행
- 게르
- 테를지국립공원
- 몽골 고기
- 칭기스칸 동상
- 백준
- 담슈타트
- Today
- Total
맛있는물회
[맛있는물회] <SWEA알고리즘> 4865번 "글자수" 본문
문제 조건
두 개의 문자열 str1과 str2가 주어진다. 문자열 str1에 포함된 글자들이 str2에 몇 개씩 들어있는지 찾고, 그중 가장 많은 글자의 개수를 출력하는 프로그램을 만드시오.
예를 들어 str1 = “ABCA”, str2 = “ABABCA”인 경우, str1의 A가 str2에 3개 있으므로 가장 많은 글자가 되고 3을 출력한다.
파이썬의 경우 딕셔너리를 이용할 수 있다.
Input
첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50
다음 줄부터 테스트 케이스 별로 길이가 N인 문자열 str1과 길이가 M인 str2가 각각 다른 줄에 주어진다. 5≤N≤100, 10≤M≤1000, N≤M
Output
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
생각한 아이디어
파이썬의 딕셔너리와 set함수로 중복을 제거한다면 아주 간단하게 풀 수 있다.
딕셔너리란 C언어의 구조체와 아주 동일한 듯 하면서 조금 다르다.
List - Value 이렇게 지정되는데 딕셔너리에서 List는 중복이 불가능하다.
따라서 이번 문제의 글자 수를 판단하는데 Value 값에 Count를 넣어서 증가시켜준다면 아주 간단하게 접근이 가능하다.
한가지 간과했던 건 X의 str에서 중복되는 부분을 그냥 접근해버리면 오류가 발생한다.
그래서 arr1 = list(set(arr1)) 이라는 간단한 함수를 사용해서 arr1 의 중복 값을 삭제해주었다.
그렇게 arr1으로 만든 딕셔너리와, arr2를 비교하며 count 해주면 쉽게 풀린다.
소스코드
T = int(input())
for TC in range(1, T+1):
arr1 = str(input())
arr2 = str(input())
arr1 = list(set(arr1))
cntDic = {arr1[0] : 0}
for i in range(1,len(arr1)):
cntDic[arr1[i]] = 0
for i in range(0,len(arr1)):
for j in range(0,len(arr2)):
if arr1[i] == arr2[j]:
cntDic[arr1[i]] += 1
MAX = -1
for i in range(0,len(arr1)):
if cntDic[arr1[i]] >= MAX:
MAX = cntDic[arr1[i]]
print("#%d %d" %(TC,MAX))
*파이썬 문법 정리
- Array = list(set(Array)) 를 하면 Array 에서 중복되는 Value값을 찾아내서 중복되지 않게 1개만 남겨둔다.
(뒤에 것을 삭제하나?)
- 딕셔너리를 통해 1대1 대응 문제를 간단하게 풀 수 있다.
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <SWEA알고리즘> 4866번 "괄호검사 " (0) | 2020.04.05 |
---|---|
[맛있는물회] <SWEA알고리즘> 4869번 "종이붙이기" (0) | 2020.04.05 |
[맛있는물회] <SWEA알고리즘> 4861번 "회문" (0) | 2020.04.02 |
[맛있는물회] <SWEA알고리즘> 4864번 "문자열 비교" (0) | 2020.04.02 |
[맛있는물회] <SWEA알고리즘> 4843번 "특별한 정렬" (0) | 2020.04.02 |