#include <iostream>
#include <climits>
using namespace std;

int n;
int arr[22][22];
bool check[22];
int ans = INT_MAX;

void DFS(int x, int L)
{
    if (x == n / 2)
    {
        int start, link;
        start = 0;
        link = 0;

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (check[i] == true && chek[j] == true)
                {
                    start += arr[i][j];
                }
                if (check[i] == false && check[j] == false)
                {
                    link += arr[i][j];
                }
            }
        }

        int temp = abs(start - link);
        if (ans > temp)
        {
            ans = temp;
        }

        return;
    }

    for (int i = L; i < n; i++)
    {
        check[L] = true;
        DFS(x + 1, i + 1);
        check[L] = false;
    }
}
int main(int argc, char const *argv[])
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n;

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> arr[i][j];
        }
    }
    DFS(0, 1);

    return 0;
}

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

백준[15663번] N과 M(9)  (2) 2023.10.31
백준[2133번] 타일 채우기  (0) 2023.10.30
백준[3197번] 백조와 호수  (0) 2023.09.19
백준[1655번] 가운데를 말해요  (0) 2023.09.19
이진 탐색(Binary_search) using python  (0) 2022.12.31

1. Internet vs internet의 차이

Internet은 internet의 포함된다.

Internet : 고유명사, TCP/IP로 운용되는 network of networks -> 가장 대표적으로 우리가 쓰고 있는 것.

ineternet: 일반적인 용어, network of networks, network들을 묶어서 만든 하나의 network, TCP/IP로 운용되지 않아도 상관없다.

 

2. Internet의 장치적 관점

  1. device == host == end systems : Internet edge 부분에서 앱을 구동하는게 목적
  2. Packet switches: 최대한 신속히 packet을 forwarding 하는 것.
    1. packet: message를 적절하게 나눠서 보내는 전송단위
    2. forwarding vs routing
      1. forwarding: 경로가 일치하도록 router to router, forwarding table을 활용해서 적절한 router의 위치로 이동(forwarding table은 routing algorithm을 통해 생성), 각 router마다 forwarding table을 가지고 있으며, line card마다 생성됨, router가 독자적으로 결정
      2. routing: source to dest까지의 경로 , 사실상 forwarding이 합쳐져서 routing을 만듦, global한 세팅으로 router들이 모두 일관(Consistent)되어야 한다.
    3. Ethernet switch: router에 traffic을 전달, router로부터 traffic을 전달 받음.
  3. Communication links(매체)- fiber, satellite, radio 대역폭은 전송효율과 비례
  4. Network : 1,2,3의 collections.

3. Internet의 software 관점

protocol: 규약, 명시 -> software나 펌웨어로 받음. ex) HTTP, OTT, Skype, TCP, IP, WIFI, 4G

 

4. Internet의 service관점

Internet은 Infrastructure api를 제공(application을 가능하게 해준다.)

 

5.  ISP(Internet Service Provider) - ex) skt, kt, lg

  1. ISPS - 다수의 ISP로 연결된 형태로 동작

6. Protocol - 규약, 형태 규정, 메시지 전송에 관해 취해야할 행동

 

7. host: client vs server => 역할 구분: 서비스를 제공 or 요청

 

8. Access network: host들이 정보를 주고받기 위해 가장 먼저 접근해야하는 장소(host 직접 연결x)

 

9. network core의 기능

수많은 ISP, access network의 연결, router들만 포함

  1. router : multiple LAN card, line card(보드) -> 각각의 특수한 일을 하는 컴퓨터(IP 여러 개)
  2. IP 주소는 컴퓨터에 연결된 네트워크 인터페이스 카드에 부여
  3. switch fabric: line card를 연결해주는 네트워크, 하나의 router에 들어 있음. -> 하나의 네트워크 장치에 있는 컴퓨터들을 연결해주는 network

이진 탐색(Binary_search): 배열 내부의 데이터가 정렬되어 있을 경우, 시작점, 끝점, 중간점 필요

찾으려는 데이터와 중간점(middle)위치에 있는 데이터를 반복적으로 비교

시간복잡도: O(logN)

1) 재귀 함수 이용

def binary_search(array, target, start, end):
if start > end:
return None
mid = (start + end) // 2
# 찾은 경우 중간점 인덱스 반환
if array[mid] == target:
return mid
# 중간점의 값보다 찾고자 하는 값이 적은 경우 왼쪽 확인
elif array[mid] > target:
return binary_search(array, target, start, mid-1)
# 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
else:
return binary_search(array, target, mid + 1, end)

2) 반복문을 이용
def binary_search(array, target, start, end):
while start <= end:
mid = (start + end) // 2
# 찾은 경우 중간점 인덱스 반환
if array[mid] == target:
return mid
# 중간점의 값보다 찾고자 하는 값이 적은 경우 왼쪽 확인
elif array[mid] > target:
end = mid - 1
# 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
else:
start = mid + 1

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

백준[15663번] N과 M(9)  (2) 2023.10.31
백준[2133번] 타일 채우기  (0) 2023.10.30
백준[3197번] 백조와 호수  (0) 2023.09.19
백준[1655번] 가운데를 말해요  (0) 2023.09.19
백준 14889번 스타트와 링크  (0) 2023.09.07

+ Recent posts