[Silver IV] DNA - 1969
๋ฌธ์
DNA๋ ์ด๋ค ์ ์ ๋ฌผ์ง์ ๊ตฌ์ฑํ๋ ๋ถ์์ด๋ค. ์ด DNA๋ ์๋ก ๋ค๋ฅธ 4๊ฐ์ง์ ๋ดํด๋ ์คํฐ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค(Adenine, Thymine, Guanine, Cytosine). ์ฐ๋ฆฌ๋ ์ด๋ค DNA์ ๋ฌผ์ง์ ํํํ ๋, ์ด DNA๋ฅผ ์ด๋ฃจ๋ ๋ดํด๋ ์คํฐ๋์ ์ฒซ๊ธ์๋ฅผ ๋ฐ์ ํํํ๋ค. ๋ง์ฝ์ Thymine-Adenine-Adenine-Cytosine-Thymine-Guanine-Cytosine-Cytosine-Guanine-Adenine-Thymine๋ก ์ด๋ฃจ์ด์ง DNA๊ฐ ์๋ค๊ณ ํ๋ฉด, “TAACTGCCGAT”๋ก ํํํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ Hamming Distance๋ ๊ธธ์ด๊ฐ ๊ฐ์ ๋ DNA๊ฐ ์์ ๋, ๊ฐ ์์น์ ๋ดํด์คํฐ๋ ๋ฌธ์๊ฐ ๋ค๋ฅธ ๊ฒ์ ๊ฐ์์ด๋ค. ๋ง์ฝ์ “AGCAT"์ ”GGAAT"๋ ์ฒซ ๋ฒ์งธ ๊ธ์์ ์ธ ๋ฒ์งธ ๊ธ์๊ฐ ๋ค๋ฅด๋ฏ๋ก Hamming Distance๋ 2์ด๋ค.
์ฐ๋ฆฌ๊ฐ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค. N๊ฐ์ ๊ธธ์ด M์ธ DNA s1, s2, ..., sn๊ฐ ์ฃผ์ด์ ธ ์์ ๋ Hamming Distance์ ํฉ์ด ๊ฐ์ฅ ์์ DNA s๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค. ์ฆ, s์ s1์ Hamming Distance + s์ s2์ Hamming Distance + s์ s3์ Hamming Distance ... ์ ํฉ์ด ์ต์๊ฐ ๋๋ค๋ ์๋ฏธ์ด๋ค.
์ ๋ ฅ
์ฒซ ์ค์ DNA์ ์ N๊ณผ ๋ฌธ์์ด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋์งธ ์ค๋ถํฐ N+1๋ฒ์งธ ์ค๊น์ง N๊ฐ์ DNA๊ฐ ์ฃผ์ด์ง๋ค. N์ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , M์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ Hamming Distance์ ํฉ์ด ๊ฐ์ฅ ์์ DNA ๋ฅผ ์ถ๋ ฅํ๊ณ , ๋์งธ ์ค์๋ ๊ทธ Hamming Distance์ ํฉ์ ์ถ๋ ฅํ์์ค. ๊ทธ๋ฌํ DNA๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋์๋ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
5 8
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
TAAGATAC
7
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
4 10
ACGTACGTAC
CCGTACGTAG
GCGTACGTAT
TCGTACGTAA
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
ACGTACGTAA
6
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
6 10
ATGTTACCAT
AAGTTACGAT
AACAAAGCAA
AAGTTACCTT
AAGTTACCAA
TACTTACCAA
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
AAGTTACCAA
12
# ํ์ด ๋ฐฉ๋ฒ
1. “Hamming Distance๊ฐ ์ต์”๋ผ๋ ์๋ฏธ ํ์ ํ๊ธฐ
from ๋ฌธ์ ) ๋ง์ฝ์ “AGCAT"์ ”GGAAT"๋ ์ฒซ ๋ฒ์งธ ๊ธ์์ ์ธ ๋ฒ์งธ ๊ธ์๊ฐ ๋ค๋ฅด๋ฏ๋ก Hamming Distance๋ 2์ด๋ค.
์๋ก ๋ค๋ฅธ ๋ DNA๊ฐ ๋น์ทํ ๊ตฌ์ฑ์ ์ด๋ฃฐ์๋ก Hamming Distance๊ฐ์ ์์์ง๋ค๋ ๊ฒ์ ์ดํด
2.. “Hamming Distance๊ฐ ์ต์”๊ฐ ๋๊ธฐ ์ํด DNA s์ ๊ผด ์์ธกํ๊ธฐ
์ ๋ ฅ ๋ฐ์ N๊ฐ์ DNA์ ๋น์ทํ ๊ตฌ์ฑ์ ์ด๋ฃจ์ด์ผ ํ๋ฏ๋ก
์ด๋ง๋ค ๊ณตํต์ ์ผ๋ก ๋ง์ด ๋์จ ์ (A,T,G,C)๋ก ๊ตฌ์ฑ๋๋ฉด ๋์ง ์์๊น?
3. ์๊ณ ๋ฆฌ์ฆ ๋ ์ฌ๋ฆฌ๊ธฐ
step1) N๊ฐ์ DNA๋ค์ ๋ชจ๋ ์ ๋ ฅ ๋ฐ๊ณ
step2) ์ด๋ง๋ค ๊ฐ๊ฐ์ ๋ดํด๋ ์คํฐ๋๊ฐ ๋ช๋ฒ ๋์๋์ง ์นด์ดํธ ํ๋ค
step3) ๊ทธ ์ค ๊ฐ์ฅ ๋ง์ด ๋์จ ๋ดํด๋ ์คํฐ๋๋ฅผ ๊ณ ๋ฅธ๋ค.
step3) ๊ทธ๋ฆฌ๊ณ ์ด๋ค๋ก ๊ตฌ์ฑ๋ ์ต์ข DNA s๋ฅผ ์์ฑํ๋ค.
step4) Hamming Distance ๊ณ์ฐํ๋ค. (์ต์ข DNAs ๊ตฌ์ฑ์ผ๋ก ์ฑํ๋์ง ์๋ ๊ฒฝ์ฐ์ ๋ํ ํ์)
# ์ฝ๋
n, m = map(int, input().split())
dna_list = [input().strip() for _ in range(n)]
result = ''
count = 0
for col in range(m):
cnt = {'A': 0, 'C': 0, 'G': 0, 'T': 0}
for row in range(n):
cnt[dna_list[row][col]] += 1
sorted_cnt = sorted(cnt.items(), key = lambda x: (-x[1],x[0]))
result += sorted_cnt[0][0]
count += n - sorted_cnt[0][1]
print(result)
print(count)