학습 정리 76

[C++] 백준 25305번 - 커트라인

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net [소스코드] #include #include using namespace std; // [baekjoon] 25305번 - 커트라인 // 2023.01.04 int main() { int arr[1001] = { 0 }; int n, k, x; cin >> n >> k; for (int i = 0; i > arr[i]; } sort(arr, arr + n, greater()); cout

[C++] 백준 2563번 - 색종이

https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net [소스코드] #include using namespace std; // [baekjoon] 2563번 - 색종이 // 2023.01.04 int main() { int arr[101][101] = { 0 }; int n, a, b; int area = 0; cin >> n; for (int k = 0; k > a >> b; for (int i = a; i < a + 10..

[C에서 C++로 넘어가기] - 4. 문자열 입력받기 : String

C++은 C와 비교해서 더 편리한 기능을 많이 지원하는데, 그 중 하나가 바로 문자열입니다. char*, char[] 로 문자열을 입력받는 C와는 달리 C++에서는 문자열을 더 쉽게 다룰 수 있습니다. string string은 C++ STL에서 제공하는 클래스로, 문자열을 다루는 클래스입니다. ( 클래스에 대한 설명은 이전 게시글을 참고해주세요! ) string의 특징을 간단하게 정리하면 다음과 같습니다. 문자열 끝에 null문자(‘\0’) 등이 포함되지 않는다. 문자열의 길이를 동적으로 변경 가능하다. 마치 배열처럼 한 문자씩 다룰 수 있다. 사용을 위해서는 string 헤더파일을 선언해야 한다. ( #include ) , ==, + 등과 같은 연산자들을 사용할 수 있다. 문자열 비교 (, ==) :..

[C에서 C++로 넘어가기] - 3. cin, cout, endl

C언어만 사용하던 입장에서, C++ 코드를 봤을때 가장 먼저 알 수 있던 차이점은 입출력시 printf, scanf 대신 cin, cout을 사용하는 것이었습니다. 이와같이 C++에서 지원하는 입출력에 대해 알아보겠습니다. cout C언어에서는 출력을 위해 printf를 사용했지만, C++에서는 더 쉬운 출력 함수인 cout이 지원됩니다. C에서 printf()를 사용하기 위해 를 include 했던 것처럼, C++에서 cout을 사용하기 위해서는 이라는 헤더파일을 include 해야 합니다. #include using namespace std; int main(void){ cout

[C에서 C++로 넘어가기] - 2. class

앞선 게시글에서 이야기한 것처럼, C++이란 C언어에 Class가 추가된 언어입니다. 이번 게시글에서는 Class가 무엇인지 살펴보겠습니다. class란? 클래스(class)의 정의는 " 특정한 용도를 수행하기 위한 변수와 함수를 모아 둔 틀 " 입니다. 언뜻 보면 클래스라는 게 C언어의 구조체(struct)와 비슷해 보입니다. 자세히 살펴보면, C언어의 구조체(struct) / C++의 구조체(struct) / C++의 클래스(class) 셋은 조금씩 다릅니다. 먼저 C++의 구조체가 C언어의 구조체와 다른 점은 다음과 같습니다. 함수를 구조체 멤버로 사용할 수 있다. typedef를 따로 선언하지 않아도, struct 키워드를 생략할 수 있다. 접근 제어자, 상속, 생성자, 소멸자도 선언가능하다. C..

[C에서 C++로 넘어가기] - 1. C와 C++의 차이, namespace

코딩테스트 준비를 위해 C++을 공부한 내용을 정리하고자 게시글을 작성하게 되었습니다. 대학에서 C언어를 공부한 상태에서 C++을 공부하는 상태이므로 C와 중복되는 개념을 제외하고, C와 C++의 차이점을 위주로 정리하고 있습니다. 목차 (update 23.05.19) [C에서 C++로 넘어가기] - 1. C와 C++의 차이, namespace [C에서 C++로 넘어가기] - 2. class [C에서 C++로 넘어가기] - 3. cin, cout, endl [C에서 C++로 넘어가기] - 4. 문자열 입력받기 : String [C에서 C++로 넘어가기] - 5. 정렬하기 : sort [C에서 C++로 넘어가기] - 6. vector [C에서 C++로 넘어가기] - 7. 이진 탐색- binary_searc..

14. 인공지능, 블록체인과 보안

🤖 인공지능과 보안 기계 학습 (machine learning) 경험을 통해서 나중에 유사하거나 같은 일을 더 효율적으로 처리할 수 있도록 하는 기술 1. 지도학습 : 입력과 대응하는 출력을 데이터로 제공하는 기술 2. 비지도학습 : 입력 없이 데이터만 주어졌을때 유사한 것들을 서로 묶어 군집 찾는 기술 3. 강화학습 : 상황별로 행동에 따른 시스템의 보상을 제공 인공지능 활용 분야 전문가 시스템 : 특정 문제 영역에 대해서 전문가 수준의 해법을 제공하는 기술 데이터 마이닝 : 대규모의 데이터에서 이전에 알려지지 않은 유용한 정보를 추출하는 기술 패턴 인식 : 데이터에 숨겨져 있는 다양한 패턴이나 규칙들을 찾는 기술 → 음성 인식, 영상 인식, 이상징후 탐지 관련 분야에서 많이 활용 자연어 처리 : 사람..

13. 랜섬웨어, Heart Bleed 공격, APT 공격

💵 랜섬웨어 랜섬웨어란? Ransom(몸값)+Ware(제품)의 합성어. 사용자 컴퓨터의 화면을 잠그거나 문서 암호화 후 복호화 대가로 금전적 보상을 요구하는 악성코드 이메일, SNS, 웹사이트 방문 등으로 감염된다. 기존 악성코드와 차이 정보를 유출하는 대신 정보 접근을 차단 자신의 존재를 숨기는 기존 악성코드와 달리 피해자에게 접근, 금전적 보상 요구 악성코드 사용이 비교적 용이 랜섬웨어의 종류 Locker Ransomware : 화면 등을 잠금으로써 사용자 접근을 차단 Crypto Ransomware : 파일을 암호화 함으로써 사용자의 정보 접근 차단 랜섬웨어 사례 모바일 랜섬웨어 Android Defender : 가짜 백신행세, 단순히 화면을 잠그는 lockscreen을 수행 → 스마트폰의 안전모드..

12. 백도어, SQL 인젝션, 크로스 사이트 공격(XSS), DDoS

🚪 백도어 백도어란? 트로이 목마 : 가장 유명한 백도어 공격, 정상적인 프로그램에 비 정상 코드를 삽입한 프로그램 스파이 웨어 : 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버로 전송하는 프로그램 백도어 원래 의미 : 인증과정 없이 OS, 프로그램에 접근할 수 있게 만든 통로(뒷문) → 프로그램 개발자, 관리자가 사용하기 위해 만들어짐 백도어 현재 의미 : 해커가 시스템에 (상대 시스템에) 쉽게 접근하기 위한 비밀 통로 백도어의 종류 로컬 백도어 서버의 셸을 얻어낸 뒤에 관리자로 권한을 상승시킬 때 사용되는 백도어 일반 계정 통해 시스템 접근 → 관리자 권한 상승 취약점 공격 원격 백도어 원격에서 관리자 계정을 획득 네트워크 포트 백도어 타깃 → 원격 접근으로 관리자 권한 취득 패스워드 크래킹..