728x90
https://www.acmicpc.net/problem/1969
1969번: DNA
DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오
www.acmicpc.net
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
String[] strArr = new String[N];
int hd = 0, max = 0;
String answer = new String();
for (int i = 0; i < N; i++) {
strArr[i] = br.readLine();
}
for (int i = 0; i < M; i++) {
int a = 0, t = 0, g = 0, c = 0;
for (int j = 0; j < N; j++) { // 어떤 알파벳이 가장 많은지 확인
char dna = strArr[j].charAt(i);
switch (dna) {
case 'A':
a++;
break;
case 'T':
t++;
break;
case 'G':
g++;
break;
case 'C':
c++;
break;
}
}
max = Math.max(a>c?a:c, g>t?g:t);
hd += N-max; // 문제에서 구하라던 dna알파벳 다른 갯수 구하기
answer += getMax(a, t, g, c, max); // 가장 많이 나온 char 반환
}
System.out.println(answer);
System.out.print(hd);
}
private static char getMax(int a, int t, int g, int c, int max) {
if(a==max) return 'A';
else if(c==max) return 'C';
else if(g==max) return 'G';
else return 'T';
}
}
회고
- 문제를 이해를 못해서 오랜 시간이 걸렸다.
- 알파벳 순서대로 나타내는 걸 까먹어 많이 틀렸다.
- 문제를 잘 이해하도록 노력해야겠다.
'Algorithm Study > BaekJoon (JAVA)' 카테고리의 다른 글
백준 4358_생태계_JAVA (0) | 2024.03.29 |
---|---|
백준 2745_진법 변환_JAVA (0) | 2024.03.28 |
백준 1764_듣보잡_JAVA (0) | 2024.03.27 |
백준 1181_단어 정렬_JAVA (0) | 2024.03.26 |
백준 14888_연산자 끼워넣기_JAVA (0) | 2024.03.25 |