P.study
-
[알고리즘] 최소 신장 트리 개념P.study 2020. 6. 17. 03:08
책을 보면서 그리디 알고리즘으로 최적해가 보장되는 예로 최소 신장 트리가 있었다! 당연히 기억 안나니까 한번 공부해 볼까?!! 최소 신장 트리 " 간선들이 가중치를 갖는 그래프에서 가중치의 합이 가장 작은 트리를 말한다. " 최소 신장 트리를 찾는 알고리즘을 공부해보려 한다. 1. 프림 알고리즘 : 시작점을 기준으로 모든 정점을 포함할 때까지 인접한 정점에서 가중치가 가장 작은 간선을 선택하여 하나씩 확장해 나간다. [순서] 1. Start 에서 바라보면 8,9,11 중에서 가장 가중치가 낮은 간선을 택한다. 2. 연결되어 있는 간선들 중에 가중치가 가장 낮은 9를 선택한다. 3. 연결된 간선(1,10,11,12,13) 중 가장 낮은 5를 선택한다. 4. 연결된 간선(11,12,13) 중 가장 낮은 11..
-
[알고리즘] 그리디 알고리즘 개념 & C언어.ATM(11399번)P.study 2020. 6. 10. 23:53
분명 나는 알고리즘을 배웠는데... 왜 다 까먹은 것일까... 그리디 알고리즘.. 뭔가 이름만 들어도 욕심쟁이같은 느낌이 든다 !! 그리디 알고리즘 (Greedy Algorithm) 눈앞의 이익만 우선 추구하는 알고리즘 (Greedy = 탐욕스러운) [개념] 최적해를 구할때 눈 앞에 가장 좋아 보이는 선택을 반복하여 최적해를 찾는 알고리즘. 최적해를 보장하진 않음. (그 상황에서 좋아 보이는 선택을 하기 때문에 대부분 뛰어난 결과를 도출하지 못함.) 극단적으로 문제에 접근함. (무조건 숫자가 높은순으로, 무조건 숫자가 낮은 순으로, 무조건 짧은 순으로 등등..) [예시] Q. 동전 660원의 동전 갯수는? 조건 : 무조건 금액이 높은 동전 순서대로 >>>> 극단적인 조건 500원 > 1개 100원 > 1..
-
[Java] Map과 Hash MapP.study/JAVA 2020. 6. 5. 19:29
기초를 탄탄히! Map이란? key와 value 형태로 값이 저장되어 있음. 값을 조회할 때 key 값을 통해 value를 구할 수 있음. 리스트나 배열처럼 순차적으로 해당 요소를 찾지 않고 key를 통해 value를 찾음. Key value 91811122 홍길동 91913344 이몽룡 key는 중복되지 않는 학번, value는 이름 / " 사전 "처럼 key를 통해 value를 찾는다! Map을 구현한 클래스 : HashMap, LinkedHashMap, TreeMap HashMap value의 Null 값을 허용 많은 Map을 저장해야하는 경우 충분한 대용량으로 매핑을 효율적으로 저장할 수 있음 LinkedHashMap put을 통해 넣는 key의 순서가 보장된다.ex) 넣는 순서대로 저장된다. T..
-
[Suricata] 설치 & rule 만들어보기P.study/설치 2020. 5. 31. 22:29
suricata가 도데체 무엇인고.... 아브라카다브라도 아니고 정말 신기한 이름일세... [ 개념 ] Suricata IDS (침입탐지시스템) / IPS (침입방지시스템) 이 가능한 오픈소스 기반의 툴. 서비스등에서 발생하는 보안과 관련된 각종 로그 및 이벤트를 통합해서 모니터링할때 사용. Snort 실시간 traffic 분석 및 packet logging 할때 사용. Snort 와 Suricata 차이점 Snort Single-Thread 지원 Suricata Multi-Thread 지원 rule suricata를 이용해서 해당 사이트의 로그를 나만의 방식으로 설정하고 싶을때 작성 suricata rule 작성 관련 규칙 ↓ https://suricata.readthedocs.io/en/suricat..
-
[Java] 객체지향의 특성과 예제P.study 2020. 5. 8. 13:26
오늘은 JAVA 코딩을 통한 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 의 특징을 알아볼 것이다! 특징은 상속, 다형성, 추상화, 캡슐화, 정보은닉이 있으며 이것에 대한 간단한 예제를 실습해 보았다. 상속 (JAVA는 단일상속만을 지원) : 기존의 클래스를 이용해서 새로운 클래스를 만들어 변수와 메서드를 추가로 정의한 것 (객체들 사이의 계층적 구조를 이룰 수 있음) **상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념** 다형성 : 하나의 인터페이스를 이용해 서로 다른 구현을 제공함 메서드 오버로딩 : 한클래스 안에 같은 이름의 메서드를 여러개 정의하면서, 그 인자의 갯수나 유형을 자르게 해놓은 형태 메서..