본문 바로가기
Algorithm/정올

유전자 1701 (백준 2306)

by Ujajuck 2021. 6. 23.

문제 링크

 

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

 

2306번: 유전자

DNA 서열은 4개의 문자 {a,c,g,t} 로 이루어진 문자열이다. DNA 서열에는 생명의 신비를 풀 수 있는 많은 정보가 들어 있다. 특히 KOI 유전자의 길이는 사람의 키와 깊은 상관 관계가 있다는 것이 알려

www.acmicpc.net

http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=974&sca=4080 

 

JUNGOL

 

www.jungol.co.kr

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	/*
	 * 유전
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String str=br.readLine();
		int[][] dp=new int[str.length()][str.length()];
		for(int size=1;size<str.length();size++) {
			for(int start=0;start+size<str.length();start++) {
				int end=start+size;
				// 어떤 X가 KOI 유전자라면, aXt와 gXc도 KOI 유전자이다.
				if((str.charAt(start)=='a'&&str.charAt(end)=='t')|| (str.charAt(start)=='g'&&str.charAt(end)=='c')) {
					dp[start][end]=dp[start+1][end-1]+2;
				}
				// 어떤 X와 Y가 KOI 유전자라면, 이 둘을 연결한 XY도 KOI 유전자이다.
				for(int mid=start;mid<end;mid++) {
					dp[start][end]=Math.max(dp[start][end], dp[start][mid]+dp[mid+1][end]);
				}
			}
		}
		for(int i=0;i<str.length();i++) {
			for(int j=0;j<str.length();j++) {
				System.out.printf(dp[i][j]+" ");
			}System.out.println();
		}
		System.out.println(dp[0][str.length()-1]);
	}
}

어떤 X가 KOI 유전자라면, aXt와 gXc도 KOI 유전자이다.

--> aXt 이면 X에 2를 더해 놓는다.

 

반응형

댓글