✏️ 문제
문제 파악
제일 중요한 건 이런 식으로 같은 index에 있는 문자끼리 묶어서 그 열에서 제일 많이 사용되는 문자를 s에 추가하는 것이 포인트이다.
제일 많은 사용되는 문자가 문자열과 비교해서 다르면 Hamming Distance += 1 하는 식으로 코드를 짜면 쉽게 풀 수 있다.
문자열에서 가장 많이 나오는 문자를 가져오기 위해선 collections.Counter를 사용하면 된다.
알고리즘
- 그리디 알고리즘
- 구현
- 문자열
- 브루트포스 알고리즘
코드
from collections import Counter
n, m = map(int, input().split())
hamming = 0
ary = []
char_ary = [[] for _ in range(m)]
for i in range(n):
ary.append(list(map(str, input())))
for i in range(m):
for j in range(n):
char_ary[i].append(ary[j][i])
char_ary[i].sort() # 여러 개 있을 때 사전순으로 해야하므로
c = Counter(char_ary[i]).most_common(1)[0][0]
print(c, end='')
for j in range(n):
if char_ary[i][j] != c:
hamming += 1
print('\n' + str(hamming))
'PS > 백준' 카테고리의 다른 글
[Python] 1758번 알바생 강호 (0) | 2024.07.20 |
---|---|
[Python] 11508번 2+1 세일 (0) | 2024.07.20 |
[Python] 2828번 사과 담기 게임 (0) | 2024.07.19 |
[Python] 19941번 햄버거 분배 (0) | 2024.07.19 |
[Python] 2012번 등수 매기기 (0) | 2024.07.19 |