본문 바로가기

전체 글

(190)
[네트워크] TLS와 HTTPS 간단하게 알아보기 개요어느순간부터 HTTP를 사용하는 사이트는 거의없고 대부분 HTTPS를 사용하게되었습니다.이제는 브라우저에서 HTTP사이트를 접속할때는 안전하지않다는 경고가 나오기도합니다. 그렇다면 HTTPS는 HTTP에 비해 안전하다는 말인데 왜 그럴까요?HTTPS는 TLS(Transport Layer Security)를 통해서 패킷을 암호화하기 때문에 안전하게 주고받을 수 있게 되는것입니다. 오늘은 그 TLS에 대해 개념정도만 간단하게 알아보도록 하겠습니다.TLSTLS는 Transport Layer Security의 약자로 Client와 Server 사이의 통신을 안전하게 보호하기 위한 프로토콜입니다.TLS는 기밀성(Confidentiality), 무결성(Integrity), 인증(Authentication)의 기..
[알고리즘] 미로탈출 https://school.programmers.co.kr/learn/courses/30/lessons/159993?language=cpp 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 간단한 BFS문제입니다. 특이점이라면 시작점에서 레버까지한번, 레버에서 도착지까지 한번 두번 BFS를 해야한다는 점이겠네요 이것을 모듈로 분리하는 것이 좋아보이긴 하지만 저는 일단 그냥 별도로 했습니다.using namespace std;int N, M;struct Point{ int r, c, dist;};int solution(vector maps) { int answer = 0; N = maps.size()..
[알고리즘 풀이] 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr간단한 그리디(투포인터) 문제입니다. a + b를 합쳐 n에 가까운 수를 만들어야합니다.배열의 최대크기가 5만이기 때문에 하나하나 찾아 배열에서 제거하더라도 시간초과가 나지는 않겠지만 투포인터 방식으로 풀면 간단하면서도 빠르게 해결할 수 있을 것입니다. 투포인터를 위해 먼저 people을 정렬한 후 limit에 부합한다면 포인터를 움직여가는 식입니다. #include #include #include using namespace std;int solutio..
[쿼리] 부모의 형질을 모두 가지는 대장균 찾기 분화 시작 개체 = 부모 개체 분화가 된 개체 = 자식 개체 부모의 형질을 모두 보유한 대장균의 ID, GENOTYPE, PARENT_GENOTYPE 을 출력해야합니다.ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE (개체ID, 부모개체ID, 개체 크기, 분화 날짜, 개체 형질) 입니다. GENOTYPE 십진수를 이진수로 바꿔서 계산해야합니다. 예를 들어 5라면 101, 3이라면 11과 같이 생각해 PARENT의 GENOTYPE과 CHILD의 GENOTYPE을 계산해야됩니다. 다만 비트연산자를 사용한다면 쉽게 계산할 수 있겠네요 비교를 위해서는 parent table, child table로 나눠 join해야합니다. SELECT CHIL..
[알고리즘] 괄호 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 평범한 스택문제입니다. 괄호하면 바로 스택이 떠오르죠 '['가 top이라면 ]가 들어왔을 때 pop을 하는 등의 여러 응용을 하게됩니다. 해당 문제는 기본적인 괄호 stack문제에서 순환 키워드만 들고왔습니다. 단순히 인덱스를 순회하면서 같은 함수를 타게 만들어주면됩니다. 더 최적화할 수 있겠지만 빠르게 코딩해보았습니다.#include #include #include using namespace std;bool check(string& s, int s..
[알고리즘] 붕대 감기 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr간단한 구현문제입니다. 문제의 조건을 읽고 실수하지 않는 것이 가장 중요하겠습니다. // t초 붕대를 감는다.// 1초마다 x씩 회복하며 성공한다면 y만큼 추가로 회복한다 = t*x+y// 공격을 받으면 중단당함// bandage = [시전시간, 회복량x, 추가회복량y]// attacks = [공격 시간, 데미지] 의 배열라는 특성을 가지고 있습니다. 따라서 공격을 당하면 회복을 하지 않고 멈추기 때문에 이에 대한 제어 순서를 정해야하며, 전체의 시간흐..
[1일 1알고] 가사 검색 https://school.programmers.co.kr/learn/courses/30/lessons/60060 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 문제는 Trie를 활용하는 문제입니다. 문제에서는 특정 단어들에 대해 검색을 할것이며 이 때 ?(와일드카드 문자)가 들어갈 수 있습니다.다만 ?는 접두 혹은 접미사로만 붙을 수 있기 때문에 문제의 해결이 쉬워집니다. 일단 조건을 보았을 때 각 단어에 대해 무작정 찾는 것은 불가능할 것임을 알 수 있습니다. 이를 위해 Trie를 사용합니다. Trie에 필요한 정보는 다음과 같습니다.1. 현재 Trie Node에 들어가는 문자 ch2. 현재 Trie N..
[1일 1알고] 표 병합 https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1일 1알고라고 이름을 정해놓고서 매일 올리지 못하고 있네요 오늘은 union-find를 응용하는 문제입니다. 표가 주어지고 이에대한 명령어를 수행하는 문제입니다. 명령어로는 UPDATE, MERGE, UNMERGE가 있습니다. 다행히도 표가 50x50 크기로 정해져있기 때문에 UPDATE를 할 때 완전탐색을 하더라도 시간적으로 문제는 없을 것입니다.다만 MERGE, UNMERGE는 그룹의 전체를 바꾸는 것이기 때문에 어떻게 해결할지에대한 솔루션이 필요..