분류 전체보기 140

Greedy Algorithm (탐욕 알고리즘)

- 최적화 문제 풀이에 쓰임 (= 최대값 or 최소값 구하기) - 현재 시점에서 최적이라고 생각되는 값을 선택하는 알고리즘. 하지만 전체 시점에서 추출된 해가 항상 최적이라는 보장이 없다. * 풀이 단계 1. 해 선택 : 가장 좋은 해 선택 2. 실행 가능성, 해 검사 : 선택한 해가 조건을 충족하는지 확인. 충족하지 않을 경우, 1번의 해에서 값을 수정한 뒤 다시 반복 * EX) 동전 거스름 돈 문제 [CASE1] 800원의 거스름돈을 500, 100 원 동전을 사용하여 줄 수 있는 최 소 동전의 갯수 구하기 1) 제일 적은 갯수로 주기 위해 가장 큰 금액의 동전 (500)을 선택. 2) 나머지 금액 (800-500) 은 100원 짜리 동전을 사용 ==> 답: 4개 (500원 1개 , 100원 3개) ..

[Python][Programmers] 기초문제_12915, 12910, 12906

- [12915] 문자열 내 마음대로 정렬하기 def solution(strings, n): strings.sort() li = sorted(strings, key = lambda x : x[n]) return li ### Idea: n번째인덱스 문자 + strings 를 정렬한 뒤에 1~ 문자열을 가져오는 방법 --> sorted(str, key=lambda x : 정렬기준) 을 통해 정렬 기준을 설정할 수 있음 - [12910] 나누어 떨어지는 숫자 배열 def solution(arr, divisor): answer = list(filter(lambda x : x%divisor == 0, arr)) answer = [-1] if len(answer) == 0 else answer return sort..

[Python][Programmers] 기초문제_12921, 12919, 12918, 12917, 12916

- [12921] 소수 찾기 def solution(N): li = [True for _ in range(2, N+1)] for idx, val in enumerate(li): i = idx+2 if val == False : continue for j in range(2,N): if i*j > N: break li[i*j-2] = False answer = filter(lambda x: x == True, li) return len(list(answer)) -> 에라토스테네스의 체 +++ 다른 사람 풀이 참고 def solution(N): nums = set(range(2, N+1)) for n in range(2, N+1): if n in nums: nums -= set(range(n*2, N+1, ..

[Network] ICMP: 인터넷 제어 메세지 프로토콜

TCP/IP에서 IP를 이용한 데이터 전송은 결과에 대한 확인 방법이 없다. 이 때, OSI 네트워크 계층에서 ICMP (Internet Control Message Protocol) 프로토콜을 통해 엔드투엔드 통신이 정상적으로 이뤄졌는지 확인할 수 있다. * 멀티캐스팅 데이터의 수신을 위해서는 IGMP(Internet Group Management Protocol) 을 사용한다. - ICMP 주요 기능 1) 에러리포트 메세지 (Error Reporting Message) : 호스트 -> 호스트 데이터 전송과정에서 IP패킷 폐기시에 출발지로 "도달불능 메세지" 를 보내주는 역할을 수행. 에러메세지는 에러 코드를 포함하며, 에러코드를 통해 더 자세한 원인을 파악할 수 있다. ex) Time Exceeded..

CS/Network 2021.05.12

[Network] 공인IP와 사설IP 변환 (NAT, NAPT)

- 공인IP(Public IP): 인터넷 통신을 위해 반드시 필요한 주소. - 사설IP(Private IP): 사내 네트워크 등에서 쓰이는 주소. (다른 네트워크 내 사설 주소는 겹쳐도 통신에 문제가 되지 않음) 사설IP 범위 : 10.*.*.* / 172.16.*.* ~ 172.31.*.* / 192.168.*.* 사설 인터넷 통신을 위해서는 사설IP공인IP 변환 NAT(Network Address Translation) 이 필요하다. (NAT을 사용하지 않은 인터넷-> 사설로의 IP패킷은 폐기) - NAT의 종류 : Basic NAT, NAPT 두 개를 총칭하여 Traditional NAT(RFC 3022)라고 한다. 1) Basic NAT 사설IP 갯수 만큼 공인IP를 가지고 인터넷 연결을 한다. ..

CS/Network 2021.05.12

[Network] 데이터 전송시 목적지 설정방식 (유니캐스트, 멀티캐스트, 브로드캐스트)

IP로 데이터를 전송할 때, 목적지가 하나인지 여러개인지에 따라 3가지의 전송방식으로 분류된다. 1) 유니캐스트(Unicast) : 단 한 곳으로 데이터를 전송 2) 멀티캐스트(Multicast) : 특정 목적지 그룹으로 데이터를 전송 (네트워크는 동일하지 않아도 됨) 224.0.0.0 ~ 239.255.255.255가 멀티캐스트 IP주소 범위이다. 3) 브로드캐스트(Broadcast) : 동일 내트워크 내 모든 호스트 목적지로 데이터를 전송 255.255.255.255가 브로드캐스트 IP주소이다. ==> 데이터 패킷의 IP헤더 내부에 목적지 IP정보가 담긴다 ==> 동일 데이터를 여러 목적지로 보내고자 할 때, 멀티캐스트/브로드캐스트 방식이 효율성 ↑ [참고도서] book.naver.com/bookdb..

CS/Network 2021.05.12

[Network] IP와 Port

- IP 네트워크부 호스트부 : 32비트의 주소를 8비트씩 끊어 10진수(0~255)로 변환한 주소. 호스트의 인터페이스를 식별하는 정보. (하나의 호스트에서 유선-이더넷인터페이스/무선-LAN인터페이스 와 같이 인터페이스 별로 다른 IP를 가질 수 있다.) 네트워크부/호스트부로 구별되며, 이 구분은 가변적이기 때문에 *서브넷마스크를 사용한다. *서브넷마스크 : IP주소와 같은 32비트로 1은 네트워크부 / 0은 호스트부를 뜻한다. ex) IP : 192.168.1.1 Subnet Mask : 255.255.255.0 -> 앞에서부터 24자리는 네트워크부 / 뒤에 8자리는 호스트부를 뜻함 (== 프로픽스 표기법 : 192.168.1.1/24) 만약, 호스트부가 모두 0이면 네트워크 주소, 호스트부가 모두 ..

CS/Network 2021.05.12

소수 판별 알고리즘 (에라토스테네스의 체)

소수 (Prime Number) 란, 1과 자기 자신으로만 나누어지는 숫자 (단, 1은 소수가 아님) (1) 특정 N 이 주어졌을 때, 이 숫자가 소수인지 아닌지 판별하기 : N이 n * m (n N: break li[i*j-2] = False answer = filter(lambda x: x == True, li) return len(list(answer)) [참고] velog.io/@koyo/python-is-prime-number [내가 보려고 적는 파이썬] 소수 판별(에라토스테네스의 체) 소수를 판별하는 방식에 대해 정리해보았다. 다양한 수를 판별하는 경우에 활용할 수 있는 에라토스테네스의 체도 알아두자. velog.io

[Network] TCP/IP 4계층

* 프로토콜(Protocol)이란, : 네트워크에서의 데이터 통신을 위한 규칙 : 송신자 / 수신자 간의 통신 규약 --> 이 프로토콜들의 집합을 네트워크 아키텍처라고 하며, TCP/IP가 대표적이다. * TCP/IP 4계층 : TCP와 IP가 중심이 되는 네트워크 아키텍처로, 계층구조를 가진다. 각각 계층의 프로토콜이 모두 제기능을 해야 통신이 이뤄진다. - Application Layer 애플리케이션층 (HTTP, SMTP, POP3, DHCP, DNS..) : 디지털 신호 인식할 수 있는 데이터 변환 역할 - Transport Layer 트랜스포트층 (TCP, UDP) : 호스트 내 다양한 애플리케이션에 적절한 데이터를 배분하는 역할 - Internet Layer 인터넷층 (IP) : 동일 네트워크..

CS/Network 2021.05.07

[Network] 온프레미스(On-Premise)와 오프프레미스(Off-premise)

기업에서 어플리케이션 서비스를 제공하기 위해 서버를 운영하는 방식은 크게 두가지로 분류된다. - 온프레미스 (On-premise) : 원격 환경이 아니라, 서버를 직접 설치해 운영하는 기존의 방식을 말한다. 적절한 하드웨어를 선정해 OS와 서버 어플리케이션을 설치하고 직접 서버를 관리한다. - 오프프레미스 (Off-premise) ==> 클라우드 서비스 : 인터넷을 통해 서버를 운영하는 방식 (원격)이다. - Iaas (Infrastructure as a Service) : HW(CPU, 메모리, 스토리지)부분 서비스 제공 - Paas (Platform as a Service) : HW, OS, MW 부분까지 서비스 제공 - Saas (Service as a Service) : HW, OS, MW, Ap..

CS/Network 2021.05.07