반응형

[Baekjoon][https://www.acmicpc.net/problem/2668]

깊이 우선 탐색(DFS) 알고리즘

입력 받은 데이터가 노드로 간선을 이루고 있다고 가정 했을때,

간선의 경로가 cycle을 가진 경우 두 집합에 모두 포함된다고 볼 수 있다.

, 그래프에서 cycle을 가지는 경로의 정점을 찾는 문제

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

   static int n;
   static int[][] map;
   static boolean[] visit;
   static int cnt = 0;
   static ArrayList<Integer> result = new ArrayList<Integer>();
   
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      Scanner sc = new Scanner(System.in);
      
      n = sc.nextInt();
      map = new int[n+1][n+1];
      visit = new boolean[n+1];
      
      for(int i=1;i<=n;i++) {
         int second_row = sc.nextInt();
         map[i][second_row] = 1;
      }
      
      for(int i=1;i<=n;i++) {
         for(int j=1;j<=n;j++) {
            if(map[i][j] == 1 && !visit[j]) {
               getDFS(j,i);
            }
         }
      }
      
      Collections.sort(result);
      System.out.println(cnt);
      
      for(int i = 0;i<result.size();i++)
      {
    	System.out.println(result.get(i));  
      }
   }
   
   public static void getDFS(int x, int y)
   {
      if(x==y) {
         result.add(x);
         cnt++;
      }
      
      visit[x] = true;
      
      for(int i=1;i<=n;i++) {
         if(map[x][i] == 1 && !visit[i]) {
            getDFS(i,y);
         }
         visit[i] = false;
      }
   }
}
반응형

'알고리즘 > Baekjoon' 카테고리의 다른 글

[ Baekjoon ] #4179 불!  (0) 2020.04.19
[ Baekjoon ] #11724 연결 요소의 개수  (0) 2020.04.18
[ Baekjoon ] #1463 1로 만들기  (0) 2020.03.01
[ Baekjoon ] #10026 적록색약  (0) 2020.02.22
[ Baekjoon ] #2667 단지 번호 붙이기  (0) 2020.02.16
반응형

자주 사용하는 날짜 포맷 변경 방법

 

CONVERT( [포맷(길이)], [날짜 값], [변환형식] )

 

select convert(varchar(10), getdate(), 120)

=> 결과 : 2020-04-17

 

반응형

'DB > MSSQL' 카테고리의 다른 글

OFFSET ROWS FETCH 페이징 처리  (0) 2020.10.19
ALTER 문  (0) 2020.07.22
무결성 제약조건 CHECK  (0) 2020.07.12
문자열 char / varchar / nchar / nvarchar  (0) 2020.07.12
트랜잭션 격리수준  (0) 2018.03.21
반응형

Delegate : 델리게이트란 '대리인' 이란 뜻으로 누군가를 대신해서 일해주는 것을 전문으로 하는 것을 의미한다.

 

int num = 1;

String str = "test";

Int 형은 숫자, String은 문자열 타입을 담을 수 있듯이 메소드를 변수에 담고 사용한다고 생각하면 좀 더 쉽게 이해할 수 있을 것이다.

 

Delegate 선언 및 방식

-> delegate [ 참조할 함수의 반환 Type ] [ 델리게이트 명 ] (매개 변수 목록)

Ex) delegate int MyAddDelegate(int a, int b)

// 참조할 메소드

Public int AddDelegate(int a, int b)

{

      return a+b;

}

 

Delegate CallBack

- 여기서 Callback 이란 'A'라는 메소드를 호출했을 때 'A'에서 'B'메소드를 호출하는 것을 의미한다.

// 아래 그림 참조 > AddDelegate(), MinusDelegate(), MultiplyDelegate()를 대신 호출하는 것을 말한다.

namespace ConsoleApp2
{
    delegate int MyDelegate(int a, int b);

    class Program
    {
        static int num1 = 10;
        static int num2 = 5;

        static void Main(string[] args)
        {
            MyDelegate addDelegate = new MyDelegate(AddDelegate);
            MyDelegate minusDelegate = new MyDelegate(MinusDelegate);
            MyDelegate multiplyDelegate = new MyDelegate(MultiplyDelegate);

            Calcurator(num1, num2, addDelegate);
            Calcurator(num1, num2, minusDelegate);
            Calcurator(num1, num2, multiplyDelegate);
        }

        public static int AddDelegate(int a, int b)
        {
            return a + b;
        }

        public static int MinusDelegate(int a, int b)
        {
            return a - b;
        }

        public static int MultiplyDelegate(int a, int b)
        {
            return a * b;
        }

        public static void Calcurator(int a, int b, MyDelegate calcurate)
        {
            Console.WriteLine(calcurate(a, b));
        }
    }
}

<결과 출력>

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

DataTable에 대한 LINQ 쿼리  (0) 2022.08.23
DateTime 형식 ToString()으로 변환 시 문자열 처리  (0) 2020.12.18
반응형

[Baekjoon][https://www.acmicpc.net/problem/1463]

 

다이나믹 프로그래밍(DP) > Bottom-up 형식

풀이)

 (1) d[n] : 1 ~ N 일때 1로 만들기 위한 최소 개수를 저장.

 (2) 가장 작은 단위인 dp[1] = 0 으로 초기화 하여, dp[2] 부터 For문 처리 (Bottom-up) 형식

 (3) Math.min() 함수로 메모이제이션 해두었던 값과 현재 값의 최소값을 비교하여,

     연산을 사용하는 횟수의 최솟값을 구한다.

 

import java.util.Scanner;

public class baekjoon_1463 {
	static int[] dp;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		dp = new int[1000001];
		dp[1] = 0;
		
		for(int i=2;i<=n;i++) {
			dp[i] = dp[i-1] + 1;
			
			if(i%2 == 0) {
				dp[i] = Math.min(dp[i], dp[i/2]+1);
			}
			if(i%3 == 0) {
				dp[i] = Math.min(dp[i], dp[i/3]+1);
			}
		}
		
		System.out.println(dp[n]);
	}
}
반응형
반응형

Substitution (캐시 후 대체)

 캐시된 페이지 내 동적으로 컨텐츠를 출력할 때 사용한다.

 

 즉, 전체 페이지를 OutputCache를 이용하여 캐시가 처리되었을 때,

 Substitutio 컨트롤은 동적으로 컨텐츠를 출력할 수 있도록 해준다.

 

 간단한 예제를 확인해보면 아래와 같다.

  1. Output Cache 하단의 시간은 캐시가 30초간 걸린 시간

  2. Substitution 하단의 시간은 <asp:Substitution> 컨트롤을 이용하여 동적으로 현재 시간을 출력 처리한 결과

  -> 해당 페이지를 새로 고침 하면 output Cache는 캐시가 걸려 시간이 10:41:10으로 고정되어 있는 반면

      Substitution은 새로고침 할 때마다 시간이 새롭게 갱신되는 것을 볼 수 있다.

 

[ 현재 시간 출력 ]

<h2>OutputCache</h2>
<div><%=test %></div>

<h2>Substitution</h2>
<asp:Substitution runat="server" MethodName="GetCurrentDate" id="substitution" />

 

#region [ Substitution 메소드 처리 ] 

protected static string GetCurrentDate(HttpContext context)
{
	return DateTime.Now.ToString();
}

#endregion
반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

GET / POST  (0) 2022.03.05
쿠키(Cookie)와 세션(Session)  (0) 2021.04.30
CSS 적용하는 방법  (0) 2020.09.28
Output Cache (출력캐시)  (0) 2018.07.26

+ Recent posts