[백준] 1969. DNA

문제

풀이

  1. board 배열을 세로로 돌면서 각 문자의 갯수를 count 함.
  2. count한 결과를 dictionary tmp에 저장해 줌.
  3. items()함수를 사용하여 key, value를 list형태로 return 받음.
  4. 문제의 조건대로 갯수는 내림차순, 알파벳은 오름차순으로 정렬함.
  5. 가장 빈출된 알파벳은 res에 넣어주고, 나머지는 count에 추가 함.
  6. res배열은 join함수를 통해 문자열로 만들어주고, count는 sum해서 출력해줌.

코드

import sys

def dna() :
    n, m = map(int, sys.stdin.readline().split())
    board = [sys.stdin.readline().rstrip() for _ in range(n)]
    res = []
    count = []
    
    for i in range(m) :
        tmp = dict()
        for j in range(n) :
            if board[j][i] not in tmp.keys() :
                tmp[board[j][i]] = 1
            else :
                tmp[board[j][i]] += 1
        tmp = list(tmp.items())
        tmp.sort(key = lambda x : (-x[1], x[0]))
        res.append(tmp[0][0])
        if len(tmp) != 1 :
            for i in range(1, len(tmp)) :
                count.append(tmp[i][1])
    print(''.join(res))
    print(sum(count))

dna()

좋은 웹페이지 즐겨찾기