분류 전체보기 286

[코드트리] 메두사와 전사들

출처 : https://www.codetree.ai/training-field/frequent-problems/problems/medusa-and-warriors/submissions?page=1&pageSize=10 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai개요2024년 하반기 삼성 코딩테스트 당시 해당 문제를 푸려고 했으나, 생각보다 고려해야 할 조건이 너무 많고 코드가 길어지면서 잔실수도 많이 나와 실수를 잡는데만 시간을 많이 소요했고 4시간 만에 풀이하기엔 부족했던 거 같다. 시험이 종료 후 다시 풀어보려고 한다. 풀이 방법우선 해당 문제는 ..

Algorithm 2024.12.28

[프로그래머스] 수레 움직이기 C++

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법주의할 점 dfs 백트레킹백트레킹에서 전역 변수를 최대한 덜 사용하고 문제를 최대한 분리하기 위해 함수의 인자로 넘길 것 최대 크기가 4x4 밖에 안되므로 완전 탐색 + 백트레킹으로 생각해 볼 수 있다. 조건에 맞게 서로 교차되는 경우, 같은 곳에 이동하는 경우, 방문한 곳에 다시 방문하는 경우를 하나씩 잘 구별해 주면 된다. 또한 공이 도착하지 않은 경우에만 이동시켜주어야 한다. 이 부분에서 크게 실수를 했다.if (g_ma..

Algorithm 2024.12.24

[백준] 히스토그램에서 가장 큰 직사각형 (c++) 분할 정복

출처 : https://www.acmicpc.net/problem/6549 풀이 방법대표적인 분할 정복의 문제이다.왼쪽에서 가장 큰 사각형, 오른쪽에서 가장 큰 사각형, 경계 지역 사각형을 포함하는 사각형 중 가장 큰 사각형을 찾으면 된다.  가장 중요한 부분은 경계 지역을 포함하는 사각형의 최대 크기이다.주의 히스토 그램이 위와 같을 때 파란색 부분과 검은색 부분도 while문을 사용해 다 계산을 해주어야 한다. 기저 조건으로 start == end, end - start == 1인 경우로 설정했다. 실수한 점 넓이는 long long을 사용했다. 하지만 밑변과, 높이는 int이였다.long long width = height * (end - start)위와 같이 식을 작성했는데 연산 순서가 int끼리..

Algorithm 2024.12.24

[백준] 텀 프로젝트 (c++) dfs

출처 : https://www.acmicpc.net/problem/9466 풀이 방법 사이클을 찾는 문제이다.사이클을 찾기 위해서, group을 만들고 dfs로 탐색을 했다.group을 저장하기 위해 visited 배열을 사용했고, 해당 그룹에서의 사이클 원소 개수를 저장하기 위해 cnt_arr를 사용했다.만약 visited가 0이라면 자신이 그룹의 시작으로 설정하고 탐색을 한다. 그러다 다음 원소가 자신의 그룹가 같다면 사이클이 완성되었다는 뜻이고, 그룹 중에서 몇 번째로 방문한 원소인지를 통해 사이클의 원소 개수를 구할 수 있었다. 풀이 #include #include #include using namespace std;int t, n;int visited[100001];int cnt_arr[1000..

Algorithm 2024.12.24

[이메일 보안] S/MIME

개요PGP방법이 아닌 S/MIME에 대해 알아보자S/MIME는 MIME에 보안기능을 추가한 것이다.S/MIME에 대해 알아보자 Overview MIME란  초기의 이메일은 단순히 텍스트만 지원했다.MIME는 여러 콘텐츠 (텍스트, 이미지)등을 포함할 수 있게 하기 위해 개발이 되었다.  S/MIME S/MIME의 다양한 유형과 보안 적용 방식 이중 목적에 따라 하나를 사용하거나 여러 개를 결합하여 사용가능하다. 1. Enveloped data암호화된 메시지 + (메시지를 복호화할 수 있는 키) 암호화2. Signed data인코딩 된 메시지 + 디지털 서명 해시 값(signed digest를 포함한다.)3. Clear-signed data원본 메시지 +인코딩 된 디지털 서명 해시 값4. signed & ..

보안 2024.12.20

[프로그래머스] 퍼즐 게임 챌린지 (C++)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법통과할 수 있는 level 중에 가장 작은 level을 선택해야 한다. 해당 부분을 통해 이분 탐색을 이용한 완전 탐색으로 풀이해야 겠다고 생각했다.문제에서 해결을 못하는 경우는 없다고 했으므로 가장 최댓값을 limit으로 최솟값을 1로 설정하고 이분 탐색을 진행했다.이때 해당 level로 통과를 할 수 있다면 right = mid -1로 하여 작은 level에 대한 시도를 하며통과를 하지 못한다면 left = mid + 1을..

Algorithm 2024.12.20

블록체인

블록체인 Introduction기존의 중앙 집중형 DB1. 단일 서버에 저장된다.2. 쉬운 관리와 유지보수를 할 수 있다.3. 무결성과, 일관성을 보장하기 쉽다.4. 데이터가 한곳에 집중되어 있으므로 보안이 좋다. 분산 DB상태가 공유되어야 한다.A에서의 변경이 B, C, D에 적용이 되어야 한다. What is BlockChain?상태의 변화에 대한 기록이다 (트랜젝션을 기록)해시 값을 통해 다른 블록들과 연결한다.Hash = 이전 트랜젝션에 대한 요약 블록체인에서 값을 변경할 수 있지만, 탐지가 된다. 탐지를 하면 변경된 것을 원복 한다. 블록체인은 완전히 분산된 p2p 소프트웨어 네트워크이다.무결성만 보장해 준다. 기밀성, 가용성은 보장하지 않는다. (퍼블릭 블록체인인 경우 모든 데이터 완전히 공개..

카테고리 없음 2024.12.19

[프로그래머스] 충돌위험 찾기 (C++)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/340211?language=cpp 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 방법시뮬레이션 문제이다. 적절한 자료구조 선택과, 시뮬레이션 방법을 선택한 후 구현하면 된다. 자료구조 선택 로봇을 stuct 자료구조를 이용해서 설정했다. 이유 1. 하나의 로봇이 가져야 할 정보가 많다.2. 여러 로봇을 헷갈리지 않게 제어하기 위해 여러 자료구조를 사용하는 거보다 구조체가 제어하기 쉬울 거 같다. 시뮬레이션 방법 선택 큐를 사용한 bfs로 시뮬레이션 이유 1. 먼저 도착한 로봇을 시뮬레..

Algorithm 2024.12.19

[SSL, HTTPS] HTTP over SSL

SSLTCP기반으로 연결되며, 클라이언트와 서버 간의 안전한 통신을 보장하기 위한 프로토콜이다. 서버 인증사용자가 서버를 신뢰할 수 있는지 확인사용자가 서버의 ID를 검증한다.서버 인증서의 발급기관 (CA)가 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인한다. 클라이언트 인증서버가 클라이언트의 신원을 확인클라이언트의 ID를 검증클라이언트의 CA 발급 기관이 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인 암호화된 SSL 연결클라이언트와 서버 간의 전송되는 모든 데이터는 암호화되어 전송된다. SSL Architecture  SSL은 주로 4개의 프로토콜 계층으로 구성되어 있다. Handshake Protocol서버와 클라이언트의 상호 인증키 교환 방법, 대칭 키 암호화 방법, HMAC Method..

보안 2024.12.18

DoS and DDoS

DoS서버가 처리할 수 있는 능력을 넘어서게 요청을 보내 정상적으로 작동하지 못하게 한다. Dos 종류1. Destruction : Disks, Data System 파괴2. System resource depletion : cpu, memory, 디스크 용량을 고갈3. Network resource depletion : 가바지 데이터를 보내서 밴드 width를 꽉 채운다.Ping of Death ICMP 패킷을 정상보다 크게 보내서 마비시킨다.큰 패킷은 라우터팅 되며 공격 네트워크에 도달하는 동안 작은 여러 개의 패킷으로 분할된다.공격 대상은 많은 패킷을 처리해야 하므로 많은 부하가 된다. 패킷은 왜 작게 나누어져야할까? 1. 네트워크를 통과할 때 네트워크의 MTU가 다 다르다.2. 라우터에서는 재조립..

보안 2024.12.17