DNA - 백준(1969, 완전탐색)
17738 단어 코딩테스트코테백준완전탐색brute forcebrute force
🎯 DNA
🧐 알고리즘[접근방법]
-
입력 받은 DNA를 2차원 배열에 저장, DNA Type 선언
-
DNA를 첫 글자부터 완전 탐색하여 가장 많은 DNA Type을 String 으로 저장
-
각 자리수의 가장 많이 사용되는 DNA Type을 정렬하여 DNA 서열 만들기
-
Hamming Distance가 최소일때 DNA 서열과 Hamming Distance 출력
👨💻 소스
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();
}
}
🏅 결과
📖 관련 지식
Author And Source
이 문제에 관하여(DNA - 백준(1969, 완전탐색)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@thehill_hannam/DNA-백준1969-완전탐색저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)