https://www.acmicpc.net/problem/1969
1969번: DNA
DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오
www.acmicpc.net

해석 및 팁
이 문제는 2차원 배열에 값을 입력받은 후 세로로 값을 비교하여 가장 큰 값을 추출하여 출력해 주고 해당열의 길이에서 최빈값의 빈도수를 빼주어서 출력해 주면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int sum = 0;
int n = sc.nextInt();
int m = sc.nextInt();
char[][] arr = new char[n][m];
for(int i = 0; i < n; i++) {
String str = sc.next();
for(int j = 0; j < m; j++) arr[i][j] = str.charAt(j);
}
for(int i = 0; i < m; i++) {
int max = -1;
int index = 0;
int[] check = new int[4];
for(int j = 0; j < n; j++) {
if(arr[j][i] == 'A') check[0]++;
else if(arr[j][i] == 'C') check[1]++;
else if(arr[j][i] == 'G') check[2]++;
else if(arr[j][i] == 'T') check[3]++;
}
for(int j = 0; j < 4; j++) {
if(max < check[j]) {
max = check[j];
index = j;
}
}
if(index == 0) sb.append("A");
else if(index == 1) sb.append("C");
else if(index == 2) sb.append("G");
else if(index == 3) sb.append("T");
sum += (n - max);
}
System.out.println(sb);
System.out.println(sum);
}
}
'백준' 카테고리의 다른 글
백준 2628 종이자르기(Java) (0) | 2023.01.24 |
---|---|
백준 5800 성적 통계(Java) (0) | 2023.01.23 |
백준 13241 최소공배수(Java) (0) | 2023.01.23 |
백준 1343 폴리오미노(Java) (0) | 2023.01.23 |
백준 11576 Base Conversion(Java) (0) | 2023.01.23 |