Dev.baelanche

[백준 1969] DNA 본문

Data Structure & Algorithm/PS - JAVA

[백준 1969] DNA

baelanche 2019. 4. 22. 20:52
반응형

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int m = sc.nextInt();
        char a[][] = new char[n][m];
        
        for(int i=0; i<n; i++)
            a[i] = sc.next().toCharArray();
        
        int cnt = 0;
        for(int i=0; i<m; i++) {
            int dna[] = new int[4];
            for(int j=0; j<n; j++) {
                if(a[j][i] == 'A') dna[0]++;
                if(a[j][i] == 'C') dna[1]++;
                if(a[j][i] == 'G') dna[2]++;
                if(a[j][i] == 'T') dna[3]++;
            }
            int max = max(max(max(dna[0], dna[1]), dna[2]), dna[3]);
            cnt += n - max;
            
            int idx = max(dna);
            System.out.print(idx == 0 ? "A" : idx == 1 ? "C" : idx == 2 ? "G" : "T");
        }
        System.out.println("\n" + cnt);
    }
    
    public static int max(int[] a) {
        int max = 0;
        int idx = 0;
        for(int i=0; i<a.length; i++) {
            if(max < a[i]) {
                max = a[i];
                idx = i;
            }
        }
        return idx;
    }
    
    public static int max(int a, int b) {
        return a >= b ? a : b;
    }
}

 

주어진 n의 DNA 중 중복글자가 최대인것을 출력하고 일치하지 않는 개수만큼 Hamming Distance의 합에 더해준다.

중복시 알파벳을 사전순으로 출력해야한다는 것만 기억하면 되겠다.

 

 

 

반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 9251] LCS  (0) 2019.04.23
[백준 2212] 센서  (0) 2019.04.22
[백준 2217] 로프  (0) 2019.04.22
[백준 1700] 멀티탭 스케줄링  (0) 2019.04.22
[백준 3049] 다각형의 대각선  (0) 2019.04.19
Comments