[BOJ1969] DNA

Updated:

문제

  • DNA [A, T, G, C] 로 이루어짐
  • Hamming Distance 는 염기서열에서 다른 분자구조 개수
  • hd 합이 최소인 경우의 염기서열 구하기

입력

  • N : DNA 수 (1<= <=1,000)
  • M : 길이 (1<= <=50)
  • 둘째 줄부터 N+1번째 줄까지 DNA

출력

  • Hamming distance 합이 가장 작은 DNA(사전순 사장 앞서는 것)
  • Hamming distance 합 출력

설계

  • [A, C, G ,T] 배열 선언
  • Map 이용해서 각 인덱스의 분자구조 개수 체크
  • 각 인덱스의 최대 개수의 분자가 최소의 해밍거리 분자
  • Result string에 추가 후 나머지 인덱스 개수를 해밍거리에 추가

피드백

  • 문제 이해를 잘못해서 각 염기서열이 다른 염기서열과 비교해 해밍거리가 가장 작은 것 구하는 것인 줄 알았음
  • 그게 아니라, 특정 염기서열이 주어진 염기서열의 해밍거리 비교하여 그 합이 최소인 것을 구하기
  • 그래서 첨에는 백트래킹으로 모든 염기서열을 구한 후, 주어진 염기서열과 해밍거리 비교 —> 당연히 시간초과
  • O(nm)으로 가능한 방법 찾고 적용

How I solved(click to github)


ref :
BOJ1969

Leave a comment