시간복잡도
시간복잡도
2024.01.28알고리즘의 효율성: 시간복잡도의 이해 이전 강의에서 우리는 자료구조가 동일해도 알고리즘은 다양할 수 있다는 것을 배웠다. 하지만 알고리즘 중에서도 '더 좋은' 알고리즘은 무엇일까? 이 질문에 대한 답은 사용자의 요구에 따라 달라진다. 어떤 이는 메모리 사용량을 최소화하는 것을 선호할 수 있고, 다른 이는 처리 속도를 가장 중요시할 수 있다. 이처럼 사용자의 요구사항에 따라 알고리즘의 효율성이 결정된다. 1. 시간복잡도: 알고리즘 성능의 기준 시간복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타낸다. 하지만 실제 시간을 측정하는 것보다는 코드에서 성능에 큰 영향을 미치는 부분을 분석하여 실행 시간을 예측하는 것이 일반적이다. 이런 분석에서 가장 큰 역할을 하는 것이 바로 '반복문'이다. 1.1. ..
자료 구조와 알고리즘이란?
자료 구조와 알고리즘이란?
2024.01.28프로그래밍의 핵심: 자료구조와 알고리즘 프로그래밍의 세계에서 자료구조와 알고리즘은 중요한 두 축이다. 이 글에서는 자료구조의 기본 개념부터 알고리즘의 적용까지, 그 핵심을 짚어본다. 1. 자료구조: 데이터의 체계적 관리 자료구조는 데이터가 어떻게 조직되고, 관리되며, 어떤 방식으로 사용되는지를 규정한다. 기본적인 자료구조로는 변수와 배열이 있다. 이들은 데이터를 저장하고 처리하는 방식에서 차이를 보인다. 1.1. 일반 변수와 배열: 데이터 저장의 기본 일반 변수: 단일 데이터를 저장하며, 각 변수는 독립적인 데이터를 갖는다. jsxCopy code let a = 87; let b = 70; let c = 100; let average = (a + b + c) / 3; 배열: 여러 데이터를 하나의 변수에서..
자주 쓰이는 마스킹(정규식) 방법
자주 쓰이는 마스킹(정규식) 방법
2022.08.12e-commerce 및 회원정보 등에서 자주 사용하는 마스킹 방법 (정규식) 1. 천 단위 콤마( , ) 추가하기 const addComma = (num: number) => { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); }; console.log('addComma - result : ', addComma(123456789)); 2. 휴대폰 번호 하이픈( - ) 추가하기 const addHyphen = (phoneNum: String) => { if (!phoneNum) return ''; return phoneNum.replace(/^(\d{2,3})(\d{3,4})(\d{4})$/, `$1-$2-$3`); }; console.log('..
Git 다양한 상황에 따른 해결방법
Git 다양한 상황에 따른 해결방법
2022.06.02git 취소하고 싶을때 방식 4종류 1. 로컬 변경 취소 $ git checkout . 신규 추가한 파일에 관해서는 삭제되지 않으므로, 완전히 원래대로 되돌리려면 따로 삭제해야 한다. $ git clean -df . 2. add를 취소 $ git reset HEAD . 이것만 하면 add 상태밖에 취소되지 않기 때문에,다른 변경도 취소하고 싶으시다면, 1. 로컬 변경 취소 작업도 할 필요가 있다. 3. commit 취소 $ git reset . mode의 디폴트는 --mixed이기 때문에변경한 파일은 모두 그대로이고 git의 이력만 바뀔 뿐. 변경한 파일을 포함하여 모두 지정된 commit상태로되돌리고 싶은 경우 mode에 --hard를 지정한다. 또, 이쪽도 --hard를 지정했다고 해도 신규 추가 파..
NVM - Node Version Manager
NVM - Node Version Manager
2022.06.021. NVM이란? Node Version Manager Node.js의 버전을 관리하는 도구이다. 1.1 NVM, 왜 사용하는가? 협업을 할 때, 또는 다양한 프로젝트를 동시에 진행하야 할때 다양한 라이브러리 / 프레임워크 / 개발툴의 버전 호환 문제를 겪어서 사용한다. 이럴 때 NVM을 사용하면 아래와 같은 이점을 챙겨갈 수 있다. 컴퓨터에 다양한 버전의 Node.js 를 설치할 수 있게 해준다. use 커맨드를 이용해 사용할 Node 버전으로 간단하게 스위칭할 수 있게 해준다. 디폴트 버전을 설정하거나 / 설치한 버전들의 전체 리스트를 확인하거나 / 필요 없는 버전을 삭제하는 등등 버전 관리가 쉬워진다. 2. NVM 설치하기 보다 더 자세한 내용을 위해서는 NVM repository(공식 문서) 참고..
터미널과 서버
터미널과 서버
2022.06.01터미널(Terminal) 우리가 컴퓨터를 사용하는 방식은 보통 Window 기준으로 사용자가 마우스를 이용해서 window 운영체제를 거쳐 명령을 내리고 하드웨어를 거쳐 처리한후 다시 사용자가 결과를 받는다. 이때 마우스를 쉘(shell)이라 할 수 있다. 그럼 터미널(terminal)은 인풋과 아웃풋의 역할만 하는 것이다. OS랑 직접 통신을 할 수 있게 해준다. 터미널(terminal)에는 다양한 명령어들이 존재한다. 아래의 명령어들은 리눅스(linux)를 기준으로 한다. 명령어 ls : 현재 디렉토리의 파일 목록을 출력한다. a : 숨긴 파일을 포함해서 보여준다. l : 자세한 파일 정보를 함께 보여준다. cd : 디렉토리를 이동한다. pwd : 현재 경로를 보여준다. rm : 파일이나 디렉토리를 ..
암호화 / 복호화
암호화 / 복호화
2022.06.01들어가는 내용 암호화와 복호화는 “이미테이션 게임” 영화를 보면 많이 들을 수 있는 단어이다. 24시간 마다 바뀌는 해독 불가 암호를 풀고 1,400만 명의 목숨을 구한 천재 수학자! 매 순간 3명이 죽는 사상 최악의 위기에 처한 제 2차 세계대전! 절대 해독 불가한 암호 ‘애니그마’로 인해 연합군은 속수무책으로 당하게 된다. 천재 수학자 앨런 튜링(베네딕트 컴버배치)은 암호 해독을 위한 특별한 기계를 발명하지만 24시간 마다 바뀌는 완벽한 암호 체계 때문에 번번히 좌절하고 마는데... 암호란? 암호(Cryptography)란 0과 1로 이루어진 이진수 데이터를 수학적 계산을 통해 비트 변경을 수행하는 것을 말한다. 정상적인 데이터의 2진수 데이터를 암호화라는 과정으로 데이터를 변경하고, 복호화라는 과정..
Git(깃)
Git(깃)
2022.06.01Git(깃)이란? Git은 2005년 리누스 토르발즈가 개발한 분산 버전 관리 시스템이다. 만들게 된 이유 리누스 토르발즈는 리눅스 커널을 만들 당시에 BitKeeper라는 분산 버전 관리 시스템을 사용했는데, BitKeeper라는 서비스는 원래 유로였지만 리눅스 커뮤니티에는 무료로 제공해주고 있었다. 커뮤니티의 개발자 한명이 BitKeeper의 통신 프로토콜을 리버스 엔지니어링해서 해킹하는 사건이 발생했고, BitKeeper는 무료로 리눅스 커뮤니티에 서비스를 제공하던 것을 철회했다. 이때 리누스 토르발즈가 분산 버전 관리 시스템을 2주 만에 만들었다. 버전 관리 시스템 (VCS, Version Control System)참고 : https://heekangpark.github.io/git/vcs 버전..