root 111

[암호학] 대칭키와 비대칭키란 무엇인가

📖 개요 우리는 실생활에서 애플리케이션이나 웹을 통해 자신의 정보와 수많은 데이터들을 다른 서버들과 송수신을 합니다. 하지만 송수신하는 과정에서 누군가가 내 데이터를 도청하거나 위변조를 한다면 대단히 위험해질 것입니다. 그래서 우리는 제 3자가 도청하더라도 무슨 데이터인지 모르게 하기 위해 평문을 암호화해서 암호문으로 바꿔야 하며, 목적지에 도착하면 보내준 데이터를 읽을 수 있도록 암호문을 복호화해서 다시 평문으로 바꿔줘야 합니다. 📖 암호 알고리즘의 종류 암호 알고리즘은 크게 단방향 암호화와 양방향 암호화가 있다. 🔑 단방향 암호화 단방향 암호화는 평문을 암호문으로 암호화하는 것은 가능하지만 암호문을 평문으로 복호화하는 것은 불가능한 암호화 기법입니다. 이렇게 원래의 데이터로 복구가 불가능한 단방향 암..

이론/보안 2021.08.31

개발자 취업 필수 개념 3주차 개발일지(SQL)

개발자 취업 필수 개념 3주 차에는 데이터베이스와 SQL을 배웠다. 목차 1. DataBase 1.1 SQL, NoSQL 2. Table의 구조 3. DDL 4. DML 5. 트랜잭션의 속성 1. DataBase 더보기 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조함으로써 검색과 갱신의 효율화를 꾀한 것이다. 즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. -📚 두산백과(데이터베이스의 정의) 그러면 excel도 데이터베이스라고 할 수 있나요? 정말 아니다 라고 할 수는 없지만 excel은 데이터들이 정형화되어 있지 않은 상태도 허용된다는 점에서 데이터베이스와의 차이점이 있습니다. 정형화되어 있..

[자료구조] 스택,큐

1. 스택 더보기 스택은 데이터가 아래에서부터 쌓이고 데이터를 꺼내려면 위에서부터 빼야 하는 LIFO(Last In First Out) 구조를 가지는 자료구조입니다. 흔히 쟁반 쌓기, 빨래통에 비유가 되는 이 스택 자료구조는 파워포인트나 word 또는 다양한 프로그램의 되돌리기(ctrl + z), 다시 하기(ctrl + y) 에 쓰입니다 ctrl + z 사용하면 가장 먼저 실행한 명령보다 가장 최근에 실행한 명령을 취소해야 하니까요. 이외에도 많은 부분에 쓰이는 자료구조라서 반드시 배워야 합니다. 스택이라는 자료 구조에서 구현해야할 기능은 다음과 같습니다. push(data) : 맨 앞에 데이터 넣기 pop() : 맨 앞의 데이터를 뽑으면서 그것을 반환해주기 peek() : 맨 앞의 데이터 보기 isEm..

이론/자료구조 2021.08.26

[알고리즘] 버블정렬, 선택정렬, 삽입정렬

1. 버블 정렬 더보기 버블 정렬은 보시다시피 두 개씩 비교해서 정렬한다는 모양이 마치 거품과도 같다해서 버블 정렬이라고 부릅니다. 맨 왼쪽에서부터 두 가지 수를 비교해서 오른쪽 수가 적으면 서로 자리를 바꾸고 오른쪽 수가 크면 자리를 바꾸지 않는 것입니다. 저 빨간색 네모가 왼쪽에서 맨 오른쪽까지 도착하게 되면 한 번 순회했다고 부르는데 한 번 순회할 때마다 맨 오른쪽에 하나씩 정렬이 됩니다. 왜냐하면 제일 큰 수는 저 빨간색 네모에서 계속 자리를 바꿔 결국에는 맨 뒤로 향하기 때문입니다. 그래서 한 번 순회하면 ~~, 8 두 번 순회하면 ~~7, 8 여섯 번 순회하면 1, 2, 3, 6, 7, 8 이런 식으로 정렬이 됩니다. 이러한 동작을 코드로 구현하면 다음과 같습니다. input = [3, 6, ..

이론/알고리즘 2021.08.25

개발자 취업 필수 개념 2주차 개발일지(Git, GitHub, Branch)

개발자 취업 필수 개념 2주 차에는 협업 도구인 Git과 협업 커뮤니티인 Github를 배웠다. 목차 1. Git 2. Git 구조 3. Git 실습 4. GitHub 5. Branch 6. Pull Request 1. Git 더보기 규모가 큰 프로젝트, 현업에서는 여러 명의 개발자들과 협업하는 일은 기피할 수 없다. 이렇게 여러 명의 개발자들이 하나의 프로젝트를 동시에 개발할 때 어떤 식으로 협업을 할까? 차례대로 한 사람씩 돌아가면서 기능을 구현하면서 완성된 결과물은 카톡으로 공유하는 방법을 사용할까? 이런 방식으로 협업을 하는 것은 비효율적이며 동시에 여러 명이 같은 프로젝트를 할 수 없을 것이다. 그래서 많은 개발자들은 동시에 여러 명이 프로젝트를 관여해도 문제가 없고, 무엇이 달라졌는지 확인하기..

[알고리즘] 재귀함수

재귀 함수는 함수 안에 자기를 다시 호출하는 함수이다. 알고리즘 문제 중 어떤 패턴이 반복적으로 나오거나, 같은 문제를 여러 번 풀어야 하는 상황이 생길 때 쓰이는 방법이다. 재귀 함수를 만드는 방법은 간단하다. def infinity: print("재귀함수가 뭐냐면은...") infinity() 함수 안에 다시 자신의 함수를 호출하면 된다. 근데 위의 예시는 계속 자신의 함수를 무한정 호출하게 되므로 스택오버플로우 오류가 일어난다. def function(k): if k

이론/알고리즘 2021.08.21

[알고리즘] 이진탐색 시간복잡도

이런 배열이 있고 나는 'mango'라는 단어가 이 배열에 있는지 탐색한다고 가정하자 배열에 어느 특정 값을 찾으려면 당연히 처음부터 끝까지 하나씩 하나씩 찾아봐야 한다. 마치 배열 요소 닫힌 박스라고 생각하고 거기서 망고가 들어있는 박스를 찾으려면 하나하나씩 일일이 다 열어봐야 한다. 우린 이렇게 처음부터 순차적으로 데이터를 찾아보는 것을 순차 탐색이라 부른다. 여기서 운이 좋게도 한 번에 그 박스를 찾으면 행복하겠지만 맨 마지막에 그 박스를 찾으면 나는 운이 더럽게도 없다며 생각할 것이다. 여기서 순차 탐색의 시간복잡도를 알 수 있다. 찾고자 하는 데이터가 배열의 맨 앞에 있다면 시간 복잡도는 O(1)이지만 맨 뒤에 있었다면 시간복잡도는 O(N)이 걸릴 것이다. 즉 배열의 크기가 클수록 더 많은 시간..

이론/알고리즘 2021.08.21

개발자 취업 필수 개념 1주차 개발일지(의미 있는 이름, 추상화, 예외, 리팩토링)

개발자 취업 필수 개념 1주 차가 시작되었다. 목차 0. 클린 코드의 목적 1. 의미 있는 이름 2. 추상화 3. 예외 4. 리팩토링 0. 클린 코드의 목적 더보기 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다. - Object Oriented Analysis and Design with Application의 저자 그래디 부치- 항상 코드를 깨끗한 상태로 유지해야 합니다. 왜냐면, 깨끗한 코드가 있어야 깨끗한 코드를 만들 수 있습니다. 기존에 깨끗한 코드가 있어야 빠르게 코드를 이해하고 깨끗한 코드를 작성할 수 있기 때문입니다. 빨리 가기 위한 단 하나의 방법은 "깨끗한 코..

[알고리즘] Array와 LinkedList 분석해보기

자료구조 중에서 자주 쓰이는 Array와 LInkedList를 서로 비교하겠다. 언어는 Python 기준으로 하겠다. (선언할 때 배열 크기를 정해야 하는 c++, 자바의 정적 배열과는 달리 Python의 배열은 동적 배열이다.) 다음 간단한 배열의 예를 들어보자 배열은 index와 데이터로 이루어져있다. index는 0으로부터 시작되어 데이터의 순서를 매기며 데이터는 int형부터 시작되어 그 어떤 데이터 타입도 들어갈 수 있다. 여기서 배열의 어떤 하나의 데이터에 접근하는데 걸리는 시간은 얼마나 소요될까? 정확히 말하자면 시간복잡도 O는 얼마일까? 답은 O(1)이다. 내가 접근하고 싶은 데이터가 배열의 맨 앞에 있는 뒤에 있든 중간에 있는 ary[0], ary[2], ary[4] 이런 식으로 단 한 번..

이론/자료구조 2021.08.18

알고보면 알기쉬운 알고리즘 - 5주차 개발일지(라인, 카카오, 삼성 코딩테스)

GD프로젝트 알고리즘 수업 마지막 주 차가 시작되었다. 그럼 마지막주 차에는 라인, 카카오, 삼성 코딩 테스트 위주로 공부하게 되었는데 이에 대해 설명하겠다. 목차 1. 2019년 상반기 LINE 인턴 채용 코딩테스트 2. 2020 카카오 신입 개발자 블라인드 채용 1차 코딩 테스트 3. 삼성 역량 테스트 1. 2019년 상반기 LINE 인턴 채용 코딩 테스트 더보기 문제 Q. 연인 코니와 브라운은 광활한 들판에서 ‘나 잡아 봐라’ 게임을 한다. 이 게임은 브라운이 코니를 잡거나, 코니가 너무 멀리 달아나면 끝난다. 게임이 끝나는데 걸리는 최소 시간을 구하시오. 조건은 다음과 같다. 코니는 처음 위치 C에서 1초 후 1만큼 움직이고, 이후에는 가속이 붙어 매 초마다 이전 이동 거리 + 1만큼 움직인다. ..