컴퓨터 알고리즘 실습2) 대칭 암호화 고전방식 / 확장된 유클리드 (2)
2-12-2
- Algorithm/📚 Concept
- · 2019. 10. 9.
출처 : [이것이 코딩 테스트다 with Python] 39강 투포인터 투 포인터 (Two Pointers) 투 포인터 알고리즘은 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘을 의미한다 흔히 2, 3, 4, 5, 6, 7번 학생을 지목해야 할 때 간단히 '2번부터 7번까지의 학생'이라고 부르곤 한다 즉, 리스트에 담긴 데이터에 순차적으로 접근해야 할 때는 시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다 예시 : 특정한 합을 가지는 부분 연속 수열 찾기 N개의 자연수로 구성된 수열이 있다 합이 M인 부분 연속 수열의 개수를 구하라 수행 시간 제한은 O(N) 문제 해결 아이디어 - 투 포인터를 활용 시작점(start)과 끝점(end)..
출처 : [이것이 코딩 테스트다 with Python] 33강 서로소 집합 자료구조 서로소 집합 공통 원소가 없는 두 집합 서로소 집합 자료구조 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 서로소 집합 자료구조는 두 종류의 연산을 지원한다 합집합(Union): 두 개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산 찾기(Find): 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산 서로소 집합 자료구조: 동작 과정 살펴보기 처리 방법 (하지만, 개인적으로 이 표현이 이해 잘 안돼서, 그냥 아래 예시 보면서 이해하는 게 빠름) i) A와 B 노드가 연결되어 있을 때 a) A와 B의 루트노드가 a, b 라고 하자 b) a와 b중 a가 더 크다면 a의..
AND 연산 대응하는 두 비트가 모두 1일 때만 1 반환 1010 & 1111 = 1010 OR 연산 대응하는 두 비트가 하나라도 1일 때 1 반환 1010 | 1111 = 1111 XOR 연산 대응하는 두 비트가 다를 때 1 반환 1010 ^ 1111 = 0101 NOT 연산 비트 값 반전 ~1010 = 0101 시프트 연산 2칸 왼쪽으로 이동 00001010 > 2 = 000010 비트 삽입, 삭제 비트 삽입 만약 1010에서 2^2 자리에 1을 삽입하고 싶다. ( = 1110으로 만들고 싶다.) => 1010 | 0100을 하면 될 것. 또는 1010 | 1
2-12-2
1. 문자열 "Hello, I love you. Please love Woongsup!!!"을 XOR을 사용한 암호화 방법으로 암호화 및 복호화 하는 프로그램을 구현하시오. 여기서 key 값은 0x5 (00000101)로 한다. 여기서 Woongsup은 여러분들의 영문 이름으로 대체하도록 한다.//고전방법으로 문자열 암호화 하기 in C#include #define MLENGTH 55unsigned int do_XOR(unsigned int c, unsigned int key) //c가 문자, key가 비밀키{return c^key;}char message[] = {"Welcome to Algorithm Practices, this is Woongsup Kim!"};unsigned int encrypti..