DNA-白俊(1969,完全探索)


🎯 DNA


DNA-1969、完全探索、銀色5

🧐 アルゴリズム[メソッド]


  • 入力したDNAを2 D配列に保存し、DNAタイプを宣言します.

  • 最初のアルファベットからDNAを全面的に検索し、最も多くのDNAタイプをStringに保存します.

  • 各ビット数で最も多く使用されるDNAタイプをソートしてDNA配列を作成

  • 最小ストローク時のDNA配列とストローク出力
  • 👨‍💻 ソース

    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();
        
      }
      
    }
    
    
    

    🏅 結果



    📖 関連知識