Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 1969] DNA 본문
반응형
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