
안녕하세요, 웹 백엔드 개발자 Robin 입니다. 항상 문제의 본질을 파고드는 점이 저만의 Strong Point라고 생각합니다. 그래서 공부를 하거나, 일을 하거나, 운동을 할 때 언제든 더 잘할 수 있는 방법을 찾아내곤 합니다. 더 잘하는 개발자가 되기 위해서 저는 대학교에서 공학사 연계전공 학위를 취득했으며, '자료구조', '데이터베이스', '소프트웨어공학' 등의 CS 핵심 과목들을 우수한 성적으로 이수하는 등 컴퓨터공학의 학문적 기반을 다졌습니다. 대외적으로는 2022년부터 꾸준하게 S사의 '윈터데브캠프', K사의 '카카오 테크 캠퍼스' 등 대기업의 IT 교육 프로그램에 적극적으로 참여하고 다양한 프로젝트를 수행하며 협업 환경에 익숙해져 왔습니다. 주어진 상황이나 문제를 그대로 이해하기 보다 ..
# 자료구조Q. Array는 어떤 자료구조 인가요?- Array는 연관된 데이터를 연속된 메모리 상에 미리 할당된 크기만큼 저장하는 자료구조 입니다.Q. 미리 설정한 것보다 Array에 더 많은 데이터를 저장해야 한다면 어떻게 해결할 수 있을까요?- 기존보다 더 큰 size의 Array를 새로 선언하고 데이터를 옮긴 후에 기존의 Array는 메모리에서 삭제하는 방법으로 해결할 수 있습니다. 이와 같은 방식으로 동적으로 배열의 크기를 조절하는 자료구조를 Dynamic Array라고 합니다. 또 다른 방법으로는 데이터가 추가될 때마다 메모리 공간을 할당받는 LinkedList를 사용할 수 있습니다.Q. Dynamic Array는 어떤 자료구조 인가요?- Dynamic Array는 resize를 통해 A..
![[CS] 암호화 알고리즘](https://blog.kakaocdn.net/dn/c9dWhM/btsHnq3uIr0/ECbeWAFDXCnkNLsRUnoD5k/img.png)
1. 암호란? 중요한 정보를 읽기 어려운 값으로 변환하여 제3자가 볼 수 없도록 하는 기술 2. 암호의 구성요소 3. 암호가 제공하는 기능 기밀성: 허가되지 않은 사용자는 데이터를 볼 수 없다. 노출 위험으로부터 데이터를 보호하는 기능.무결성: 데이터를 변조하는 것이 불가능하거나 변조된 데이터를 검증할 수 있다. 변조 위험으로부터 데이터를 보호하는 기능.인증: 객체의 정체성을 식별할 수 있다. 안전한 사용자인지 확인하는 기능.부인 방지: 객체가 메시지를 송신 혹은 수신했다는 사실을 부인할 수 없도록 하는 기능.4. 암호화 알고리즘4-1) 커크호프의 원리 (Kerkhoff’s Principle)키를 제외한 모든 정보가 알려지더라도 안전해야 한다 - Auguste Kerckhoff, 1883 암호문이나 암호..
![[알고리즘] 오늘만 사는 놈에게 죽는다, 그리디 Greedy](https://blog.kakaocdn.net/dn/dyCfux/btsGUUS0jMJ/TugLKpBqiCHNbUEbbAU1p1/img.jpg)
1. 개요대망의 알고리즘 포스팅의 그 장대한 서막을 알리며 가장 먼저 알아볼 알고리즘은 그리디 Greedy 알고리즘이다. 자주 언급되는 여러가지 알고리즘들이 있지만 그 중에서도 첫 번째로 그리디를 선택한 이유는 솔루션에 대한 접근 방식이 아주 단순하기 때문이다. 우리말로 탐욕법이라고도 하는 그리디 알고리즘은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 지금 당장 좋은 것만 고르는 알고리즘이라니 정말 욕심 가득한 생각이 따로 없다. 실제로 욕심쟁이 알고리즘이라고도 불린다고 한다. 눈앞의 달콤한 이익에 취한다니 철학도로서 도저히 용납할 수 없다. 아니면 영화 '아저씨(2010)'처럼 "내일만 사는 놈은, 오늘만 사는 놈한테 죽는다", 뭐 그런건가. 아무튼 이번 포스팅에서는 욕심쟁이 그리디 알..
![[CS 발표] 인증과 인가](https://blog.kakaocdn.net/dn/AjnFp/btsGHF9LWgy/o8K6kRfrbbdPocpQ7n6ya1/img.png)
1. 개요 먼저, 인증과 인가의 사전적 정의에 대해서 살펴보자. 인증 (Authentication) : 어떠한 문서나 행위가 정당한 절차로 이루어졌다는 것을 공적 기관이 증명함. 인가 (Authorization) : 인정하여 허가함. 다음과 같으며 개발에서 인증은 내가 누구인지 확인하는 행위, 인가는 내가 권한이 있는지 확인하는 행위라고 할 수 있다. 사실 말장난에 가깝다보니 헷갈리면 인가 대신 승인이라고 생각해도 좋다. 요즘 승인이라는 용어도 많이 사용한다고 함. 2. 인증과 인가 네이버 카페를 예시로 구체적인 상황으로 살펴보자 게시물을 읽으려고 포스팅 목록을 눌렀을때 '로그인이 필요합니다' 경고창과 함께 로그인 인증이 요구된다면 서버 입장에서는 현재 요청자가 카페 회원인지 누군지 몰라서 일어나는 상황..
![[CS 발표] 어노테이션 Annotation](https://blog.kakaocdn.net/dn/bw4EM4/btsGCwx1K2t/wafkb1nQAflyMwacfOsJA0/img.png)
1. 개요 어노테이션(Annotation)은 Java 5부터 새로 추가된 문법이다. 어노테이션을 직역하면 '주석'이라는 뜻이지만 자바에서는 @ 기호를 이용해 자바 코드에 특수한 의미를 부여하는 것을 의미한다. 주석은 사람에게 정보를 제공하지만 어노테이션은 특정 코드를 사용하는 프로그램에게 추가 정보를 전달하는 것이다. 위키백과에서는 다음과 같이 말하고 있다. 🌐 자바 애너테이션(Java Annotation) 자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한..