자기개발👨‍💻/코딩 알고리즘

[C++] 백준 1969 DNA

천숭이 2022. 4. 28. 17:25

https://www.acmicpc.net/problem/1969

 

1969번: DNA

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

www.acmicpc.net

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

int n, m;
char c[1000][50];
char dna[4]={'A','C','G','T'};
int tmp[4];
int result = 0;

int main(){
	cin >> n >> m;
	
	for (int i=0;i<n;i++){
		for (int j=0; j<m; j++){
			cin >> c[i][j];
		}
	}
	
	for (int j=0; j<m; j++){
		memset(tmp , 0, sizeof(tmp));
		int max = 0, check = 0;
		for (int i=0;i<n;i++){
			for (int k=0;k<4;k++){  // A,C,G,T 빈도수 체크 
				if (c[i][j] == dna[k]){  
					tmp[k] ++;
				}
			}
		}
		
		for (int i=0;i<4;i++){
			int t = tmp[i];
			if (max < t){
				max = t; check = i;
			}
		}
		
		result += n-max;    // 최종 result 카운트업 
		cout << dna[check]; // 문자 출력 
	}
	cout <<"\n" << result; 
}

error 발생
메모리초기화 함수를 사용해 이를 해결

 

 

 

 

 

 

 

 

 

첫번째 참고 사진 출처 :

https://kongpowder.tistory.com/74