1. 문제

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

 

1969번: DNA

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

www.acmicpc.net

2. 접근방법

Hamming Distance가 가장 작은 새로운 DNA를 찾는 문제

처음에 기존 DNA들중 가장 작은 Distance를 찾는 줄 알았는데

Distance가 가장 작은 새로운 DNA하나를 만드는 문제였다.

 

조심하면서 풀자

 

문제 자체는 N과 M이 작아 완전탐색으로 풀이하면 쉽게 풀이 가능하다.

 

다른 DNA들과 Distance가 가장 작다 -> 같은 문자가 가장 많다.로 해석 하면 된다.

 

각 자릿수에서 가장 많은 문자를 정답 str에 넣으면 된다.가장 많은 문자가 여러개라면 사전순으로 넣으면 된다.

 

팁으로 갯수를 셀때 char형은 아스키코드로 자동 변환되기 때문에 배열의 index로 쓸 수 있다.

count['A']++ 이런식으로 코딩하면 더욱 쉽게 풀이 가능할 것이다.

3. 자바 코드

package backjoon;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class P1969DNA {

    public static void main(String[] args) throws Exception {
        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 [] str = new String[N];
        for(int i = 0 ; i < N ; i++){
            str[i] = br.readLine();
        }
        String answer = "";
        int minSum = 0;
        for(int i = 0 ; i < M ; i++){
            int [] cnt = new int [100];
            for(int j = 0 ; j < N ; j++){
                cnt[str[j].charAt(i)]++;
            }
            int max = 0;
            char maxChar = 'a';
            for(char j = 'A' ; j <= 'Z' ; j++){
                if(cnt[j] > max){
                    max = cnt[j];
                    maxChar = j;
                }
            }
            minSum += (N-max);
            answer += maxChar;
        }
        System.out.println(answer);
        System.out.println(minSum);
    }
}

4. 마치며

얼마만의 문제풀이인지 재밌네

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준] 1043 거짓말  (1) 2022.10.14
[백준] 1967 트리의 지름  (2) 2022.10.07
[백준] 22948 원 이동하기2  (0) 2022.03.24
[백준] 11657 타임머신  (0) 2022.03.17
[백준] 9470 Strahler 순서  (0) 2022.03.17

+ Recent posts