DNA - 백준(1969, 완전탐색)

백마금편·2022년 4월 1일
0

코딩테스트

목록 보기
3/3
post-thumbnail

🎯 DNA

DNA - 1969, 완전탐색, 실버5

DNA


🧐 알고리즘[접근방법]

  1. 입력 받은 DNA를 2차원 배열에 저장, DNA Type 선언

  2. DNA를 첫 글자부터 완전 탐색하여 가장 많은 DNA Type을 String 으로 저장

  3. 각 자리수의 가장 많이 사용되는 DNA Type을 정렬하여 DNA 서열 만들기

  4. Hamming Distance가 최소일때 DNA 서열과 Hamming Distance 출력


👨‍💻 소스

import java.util.*;

public class Main {
  
  public static final String[] DNAType = {"A", "T", "G", "C"};  // DNA 종류 선언
  
  public static void main(String[] args){
    
    Scanner sc = new Scanner(System.in);
    
    int N = sc.nextInt(); // DNA 수
    int M = sc.nextInt(); // 문자열 길이
    sc.nextLine();
    
    char[][] arr = new char[N][M];
    for(int i = 0 ; i < N ; i++) {
     String  s = sc.nextLine();
     arr[i] = s.toCharArray();
    }

    ArrayList<String> DNAList = new ArrayList<String>();
    for(int i = 0 ; i < M ; i++) {
      
      // DNA[0] : Adenine, DNA[1] : Thymine, DNA[2] : Guanine, DNA[3] : Cytosine
      int[] DNA = new int[4];
      for(int j = 0 ; j < N ; j++) {
        char c = arr[j][i];
        
        if(c == 'A') {
          DNA[0]++;
        } else if(c == 'T') {
          DNA[1]++;
        } else if(c == 'G') {
          DNA[2]++;
        } else {
          DNA[3]++;
        }
      }
      
      int maxCount = 0;
      String maxDNA = "";
      for(int j = 0 ; j < 4 ; j++) {
        if(maxCount < DNA[j]) {
          maxCount = DNA[j];
          maxDNA = DNAType[j];
        } else if(maxCount == DNA[j]) {
          maxDNA += DNAType[j];
        }
      }
      
      DNAList.add(maxDNA);
    }
    
    // Hamming DNA 구하기
    String HammingDNA = "";
    for(int i = 0 ; i < DNAList.size() ; i++) {
      char[] c = DNAList.get(i).toCharArray();
      Arrays.sort(c);
      HammingDNA += String.valueOf(c[0]);
    }
    
    
    // Hamming Distance 구하기
    int HammingDistance = 0;
    for(int i = 0 ; i < M ; i++) {
      for(int j = 0 ; j < N ; j++) {
        if(arr[j][i] != HammingDNA.charAt(i)) {
          HammingDistance++;
        }
      }
    }
    
    System.out.println(HammingDNA);
    System.out.println(HammingDistance);
    
    sc.close();
    
  }
  
}



🏅 결과

DNA


📖 관련 지식

profile
뭐 어떻게 잘 되겠지

0개의 댓글