본문 바로가기

전체 글86

[백준 알고리즘/python] 백준 1436번 영화감독 숌, 파이썬 설명 이번 문제는 백준 알고리즘의 브루트포스 단계, 1436번 영화감독 숌이다. 내가 풀면서 생각했던대로, 설명을 해 보려 한다. 문제 출처 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 먼저, 브루트포스 단계이다. 브루트 포스는 단순히 그냥 가능한 경우의 수를 전부 때려박는 알고리즘이다. 그럼 문제 접근을 어떻게 해야할까? 문제 해석을 먼저 해 보도록 하자. 문제 해석 #1. 숌이라는 염화감독은, 영화 제목에다 종말의 숫자인 666을 넣어서, .. 2020. 9. 27.
[백준 알고리즘/python] 백준 1018번 체스판 다시 칠하기, 파이썬 설명 백준 알고리즘의 브루트 포스 단계, 1018번 체스판 다시 칠하기를 파이썬으로 풀어보았다. 문제 출처 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 이 문제는 난이도가 조금 있었다. 문제 해석 먼저 하자면 #1. 크기가 N*M이고, 흰색과 검은색으로 막 칠해져있는 보드판이 있다. #2. 이 보드판을 잘라서 8*8크기의 체스판으로 만들려고 한다. #3. 체스판은 흰색과 검은색이 번갈아가며 체크무늬를 이루어야 한다. #4. 보드판을 잘라서.. 2020. 9. 13.
[백준 알고리즘/python] 백준 7568번 덩치, 파이썬 설명 백준 알고리즘 브루트 포스 단계의 7568번 '덩치' 문제를 파이썬으로 풀어보았다. 풀면서, 내가 한 생각을 토대로 설명을 포스팅 해 보려 한다. 문제 출처 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩� www.acmicpc.net 문제는 위의 링크에서 볼 수 있다. 먼저 문제 해석을 해 보면 #1. 첫 줄에는 사람의 수가 주어진다. #2. 둘째 줄에는, 사람의 덩치가 (몸무게, 키)의 형태로 한 줄에 한명의 정보가 주어진다. #3. 이를 바탕으로, 덩치의 .. 2020. 9. 13.
[백준 알고리즘/python] 백준 2231번 분해합, 파이썬 오늘은 백준 알고리즘 2231번 분해합을 풀어보았다. 물론 파이썬을 사용했다. 이 문제는 브루트 포스라는 개념을 이용하는 것이다. 문제를 보면 그렇게 어렵지는 않다. 항상 그렇지만 이해만 한다면 말이다. #생각 1. 첫줄에 N을 입력으로 받고, 가작 작은 생성자를 구해야한다. #생각 2. N이 주어지면, 1씩 빼면서 각각 분해합을 구하고, 가장 작은 분해합을 저장한다. #생각 3. 부분합을 구하는 부분은 함수처리 해주면 될 것 같다. 이렇게 문제를 쪼개어서 코드를 작성했다. 이렇게 해서 완성된 코드는 def dis_sum(N): M = str(N) result = 0 for i in M: result = result + int(i) result = result + N return result N = in.. 2020. 8. 13.
5장, Network layer :: AS 내부의 라우팅/ intra AS routing / OSPF [컴퓨터 네트워크] - 5장, Network layer :: Control Plane, Link State, Distance Vector 5장, Network layer :: Control Plane, Link State, Distance Vector 네트워크 레이어에서 하는 일을 먼저 복습하자. 크게 두 가지가 있었어, 포워딩과 라우팅이야. 포워딩은 인풋으로 들어온 패킷을 아웃풋으로 내보내는 것이고 Data Plane이고, 라우팅은 포워딩 테� god-gil.tistory.com 위의 글에서, 라우팅 알고리즘에는 LS와 DV가 있다고 했었지? 근데 생각 해 보면, 라우터가 수천개가 넘을텐데, 저렇게 메세지를 교환하는 방식은 너무 비효율적이지 않을까? 전 세계의 라우터가 같은 정보를 가지려면, 그건 또 .. 2020. 6. 21.
5장, Network layer :: Control Plane, Link State, Distance Vector 네트워크 레이어에서 하는 일을 먼저 복습하자. 크게 두 가지가 있었어, 포워딩과 라우팅이야. 포워딩은 인풋으로 들어온 패킷을 아웃풋으로 내보내는 것이고 Data Plane이고, 라우팅은 포워딩 테이블을 만드는 활동이야. Control Plane에 속해 Control Plane, 라우팅에 대해 간략하게 배워 볼거야. 제어 평면에는 두가지 방법이 존재 해. 하나는 목적지를 기반으로 하는 전통적인 방법이고, 다른 하나는 SDN이라고 해서 중앙에 라우팅을 해 주는 서버를 두고, 그 서버에서 테이블을 배정받는 방식이야. 자세한건 뒤에서 배우고, 지금은 간략하게 알아만 놓자. 자, 그러면 라우팅이라는 것은, 어떻게 길을 잘 설정해서 갈건가에 대한 부분이지? 그러면 어떤 알고리즘을 사용할까? 이것도 크게 두가지가 있.. 2020. 6. 21.
Network layer :: 3-4. IPv6 자, 오늘은 IPv6에 대해 얘기를 해 볼거야. 이게 왜 필요할까? 그냥 쓰던 IPv4쓰면 되는데? 저번에도 말했지만, IPv4의 주소 부족 문제를 근본적으로 해결하기 위해서야. IPv4로 사용하다 보니, 이제 주소 풀이 부족해, 그러다가 DHCP나, NAT같은 일종의 꼼수를 사용해서 계속 할당하고 있었는데, 이제 NAT마저도 불가능 하다는거지. 이런 목적으로 IPv6개발을 시작 했는데, 이제 개발하는 김에, IPv4로 운영하면서 보였던 단점들을 개선하고 그걸 또 반영하자고 한거야. IPv6는 일단 16비트씩 8개로 이루어져있어, 아마 이 IPv6에 대한 주소도 대부분 컴퓨터에서 명령 프롬프트창에, ipconfig을 치면 나올거야 그러면 IPv4와 IPv6의 헤더 형식을 비교해보자. 딱 보면 보이는게, .. 2020. 6. 18.
Network layer :: 3-3. NAT(Network address translation) 오늘은 NAT이라는 걸 배워볼거야. 먼저 제목에 적혀있듯이, 그냥 해석을 하면 네트워크 주소 변환이야. IPv4의 주소는 32비트를 가진다고 했었어, 그러면 이 IP주소로 표현할 수 있는 총 주소의 개수는 2의 32제곱이 될거야. 계산기로 계산해보면 4,294,967,296이 나와 상당히 많은거 아니야??라고 생각할 수 있는데, 아니야. 턱없이 부족해 그래서 이 주소 부족문제를 해결하기 위해서 IPv6로 옮겨야 한다고 주장하는데, NAT이 너무 잘 작동을 하니까, 막 그럴 필요를 못느끼고 있는거야. 그래서 IPv6의 도입이 상당히 느리다고 해. NAT은 어떤 방식인지 간단하게 설명하면, NAT 한 라우터가 단순히 IP주소를 바꿔치기 하는거야. 그러니까 하나의 Global한 IP주소를 가지고, 여러개의 l.. 2020. 6. 17.
Network layer :: 3-2. IP address, IPv4, fragment 자, CIDR, DHCP를 하면서 IP주소의 형태를 배웠고, 어떻게 할당되는지도 배웠어. 그럼 이 IP주소는 어떻게 생겼을까?에 대한걸 하려고 해. IP의 버전이 두개가 있는데 하나는 IPv4, IPv6가 있어 IPv4의 주소 부족 문제를 해결하기 위해서 나온게 IPv6거든 일단 이정도로만 알아두고 지금은 IPv4를 배워볼거야. 우리가 평상시 사용하는 198.21.2.2같은 주소형식, 이게 바로 IPv4야. IP는 Internet Protocol이야. 그러니까 인터넷을 이해하려면 꼭 알아야 한다는거지. 네트워크 레이어의 역할이 뭘까? 바로 transport layer에서 만든 segment들을 source(출발지)에서 destination(목적지)까지 배달을 책임지는 역할을 해 줘 배달의민족 같은거지. .. 2020. 6. 17.
Network layer :: 3-1. IP addressing, CIDR, DHCP 자. 오늘 이야기하고 싶은건, IP addressing에 관해서야. 이게 뭐냐면, 단순한데 각 단말들에게 주소를 부여하는것을 addressing이라고 해. 그러니까 각 단말들한테 IP 주소를 부여하는게 IP addressing이겠지? 우리가 흔히 사용하는 IP주소는 32비트 바이너리 형식으로 표현이 되어 있어. 자 그런데, 32비트면 예를 들어서, 11011111 00000001 00000001 00000001 이런 형식으로 표현이 되겠지? 근데 이건 우리가 평소에 보는 주소 형태가 아니란 말이지. 이걸 우리는 보기 쉽게 223.1.1.1이라고 표현을 하는거야 윈도우를 사용하고 있으면 콘솔창을 열어서 ipconfig 명령어를 치면 컴퓨터의 IP 주소를 확인 할 수 있어 위 사진에서 잘 보면, 같은 하나의.. 2020. 6. 17.