IT 정보/알고리즘(백준, BOJ)

[백준-BOJ] 2673

Dalyoung 2021. 2. 15. 22:17
728x90

www.acmicpc.net/problem/2673

 

2673번: 교차하지 않는 원의 현들의 최대집합

평면상에 있는 원의 둘레에 100개의 점이 일정한 간격으로 시계방향으로 번호가 1, 2, ... 100으로 붙여져 있다. 이 점들을 끝점으로 갖는 N개의 선분(원의 현)이 입력으로 주어질 때, 이들중에서 서

www.acmicpc.net

 

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

public class Main {
	public static void main(String[] args) throws IOException {
		Main m = new Main();
		m.doit();
	}


	int N;
	int arr[][] = new int[101][101];
	int dp[][] = new int[101][101];

	public void doit() throws IOException{
		//System.setIn(new FileInputStream("input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		N = Integer.parseInt(br.readLine());
		String input[];
		for(int i = 0; i < N; i++){
			input = br.readLine().split(" ");
			int x = Integer.parseInt(input[0]);
			int y = Integer.parseInt(input[1]);
			arr[x][y] = arr[y][x] = 1;
		}
		
		for(int i = 1; i <= 100; i++){
			for(int j=i; j > 0; j--){
				for(int k=j; k < i; k++){
					dp[i][j] = Math.max(dp[i][j], dp[i][k] + dp[k][j] + arr[i][j]);
				}
			}
		}
//		printArr(dp);
		System.out.println(dp[100][1]);
		
		br.close();
	}
	
	void printArr(int [][] arr){
		for(int i = 1; i <= 100; i++){
			System.out.print("[");
			for(int j = 1; j <= 100; j++){
				System.out.print(arr[i][j] + ", ");
			}
			System.out.println("]");
			
		}
	}
}
728x90
반응형

'IT 정보 > 알고리즘(백준, BOJ)' 카테고리의 다른 글

[백준-BOJ] 2696  (0) 2021.02.15
[백준-BOJ] 2680  (0) 2021.02.15
[백준-BOJ] 2624  (0) 2021.02.15
[백준-BOJ] 2602  (0) 2021.02.12
[백준-BOJ] 2588  (0) 2021.02.12