분류 전체보기 108

[알고리즘] 셸 정렬(shell sort)

셸 정렬단순 삽입 정렬(straight insertion sort) 장점은 살리고 단점은 보완하여 더 빠르게 정렬하는 알고리즘단순 삽입 정렬의 장점과 단점장점 : 이미 정렬을 마쳤거나 정렬이 거의 끝나는 상태에서는 속도가 아주 빠르다.단점 : 삽입할 위치가 멀리 떨어져 있으면 이동 횟수가 많아진다.사용방법 (정렬 시에는 모두 단순 삽입 정렬을 이용)ex) 8개 배열 일 때4-정렬 : 서로 4칸씩 떨어진 원소를 4개 그룹으로 나누어정렬하는 방법2-정렬 : 2칸씩 떨어진 원소를 모두 꺼내 두 그룹으로 나누고 정렬 실행1-정렬 : 정렬 되어 나온것들(3,1,4,2,7,5,8,6) 단순 삽입 정렬로 정렬총 7번의 정렬 실행2개 원소에서 4-정렬 수행 (4그룹, 4번)4개 원소에서 2-정렬 수행 (2그룹, 2번)..

[알고리즘] 단순 삽입 정렬(straight insertion sort)

단순 삽입 정렬 (straight insertion sort)주목한 원소보다 더 앞쪽에서 알맞은 위치로 삽입하며 정렬하는 알고리즘단순 선택 정렬과 비슷해 보이지만 다르다단순 선택 정렬은 값이 가장 작은 원소를 선택한다.단순 삽입 정렬은 값이 가장 작은 원소가 아니라 선택된 해당 원소가 있어야할 알맞은 위치를 왼쪽 원소와 비교하며 찾아 삽입한다.장점 : 이미 정렬을 마쳤거나 정렬이 거의 끝나는 상태에서는 속도가 아주 빠르다.단점 : 삽입할 위치가 멀리 떨어져 있으면 이동 횟수가 많아진다."알맞은 위치에 삽입" 과정선택된 해당 원소가 작은 원소를 만날 때까지 이웃한 왼쪽 원소를 하나씩 대입하는 작업을 반복한다.멈춘 위치에 해당 원소 대입종료 조건정렬된 배열의 왼쪽 끝에 도달한 경우tmp보다 작거나 키 값이 ..

[알고리즘] 병합 정렬 (merge sort)

병합(머지) 정렬배열을 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘이다.분할(리스트의 크기가 1이 될 때까지)과 정복(리스트를 정렬된 상태로 병합)쪼갤 때는 한 개까지!병합 할 때에는 정렬이 된 두 개의 배열을 계속해서 병합!stable 안정적이다.대규모 데이터를 정렬할 때, 안정적인 성능이 요구되는 상황에서 많이 사용된다.시간복잡도O(n logn) = 배열 병합의 시간 복잡도 O(n) x 데이터 원소 수가 n일 때 병합 정렬의 단계는 log n만큼 필요 O(log n) = O(n) x O(log n)두 개(a,b)의 배열을 한 개(c)의 배열로 병합 해보기!a=[2,4,6,8,11,13]b=[1,2,3,4,9,16,21]c=[None]*(len(a)+len(b..

[알고리즘] 버블 정렬 (bubble sort)

버블 정렬이란? What is bubble sort?이웃한 두 원소의 대소 관계를 비교하여 필요에 따라 교환을 반복하는 알고리즘으로, 단순 교환 정렬이라고도 한다.안정적인 정렬(Stable Sort)이다.그림 1번) 1회전 : 5개의 정렬 아이템들이 있으면 4번만 교환하면 정렬이 완료된다. (n-1번)그림 2번) 2회전 : 3번만 교환하면 정렬이 완료된다 (n-2번)총 n-1번 회전을 돌고 회전이 늘어날 때마다 교환시도 횟수는 1번씩 줄어든다a=[7,4,5,1,3] n = len(a) for i in range(n-1): for j in range(n-1-i): if a[j] > a[j+1]: a[j+1],a[j] = a[j],a[j+1] print(a)패스(pass)정렬하며 ..

서버 사이드 렌더링(SSR) vs 클라이언트 사이드 렌더링(CSR)

서버에서 페이지를 그려 클라이언트(브라우저)로 보낸 후 화면에 표시하는 기법반대는 클라이언트 사이드 렌더링SSR 장점첫 페이지 로딩속도가 빠르다검색엔진 최적화가 가능하다SSR 단점초기 로딩 이후 페이지 이동 시 속도가 CSR(Client Sever Rendering)에 비해 느리다.깜빢임 이슈 (매번 새로고침)서버 과부하TTV(Time To View) 와 TTI(Time To Ineract)의 공백 시간클라이언트 사이드 렌더링(CSR)클라이언트가 렌더링을 맡아서 하는 방식클라이언트 = 브라우저ajax(Asynchronous JavaScript and XML) 방식SSR과 달리 HTML 파싱부터 JS 읽기까지 브라우저에서 하기 때문에 처음 화면을 띄우는데 시간이 걸린다.SSR과 달리 화면이 띄워지는 타이밍..

NETWORK 2024.08.11

JWT 토큰

JWT(Jason Web Token)JWT Process세션으로 인증하면 서버에 부하가 걸린다. 구글은 유저가 20억명이다.그래서 나온 게 jwt, 클라이언트에게 부여해버리기, 인증만 하는것이야~JWT = JSON Web Token 약자로 전자 서명 된 URL-safe의 JSON이다서버는 헤더에 포함되어 있는 JWT 정보를 통해 인증토큰 구성AAAAAA.BBBBBB.CCCCCCheader, payload, signatureheader : 토큰의 타입과 해시 암호화 알고리즘payload : 토큰에 담을 클레임(claim) 의 정보를 포함정보의 한 조각을 클레임name : value 한 쌍으로토큰에는 여러개의 클레임을 넣을 수 있다클레임의 정보 : 등록된 클레임, 공개 클레임, 비공개 클레임 세 종류sign..

NETWORK/보안 2024.08.11

[SW사관학교 정글 9기] 정글 에세이_Week01, 돌아보는 시간

그는 "밥똥개"가 되었다.SW사관학교 정글에 합격소식을 받고, 친구들에게 주 100시간 이상 밥먹고 코딩만하러 카이스트에 간다고 카카오톡 단톡방에 자랑한 적이 있었다. 그 이야기를 듣고 친구중 한명이 나에게 "밥똥개"라는 별명을 지어주었다. ㅋㅋㅋㅋ처음에 밥똥개라길래 "바보똥개"를 줄여서 말하는건가 했는데 "밥 먹고, 똥 싸고 개발만 하는 사람"을 줄여서 밥똥개라 부르기 시작했다. 어찌 됬든 SW사관학교를 시작하며 그 말은 실화가 되며 Real 밥똥개가 되어버렸다. SW사관학교 카이스트 정글 마지막 기수! Week01주차, 입소 6일차(SW사관학교의 일주일은 목요일이 시작이다.)[Week00주차]사실 나는 코로나 때문에 바로 현장 참여를 하지 못했었다. 0주차에는 web 만드는 팀 프로젝트를 진행했었는데..

조급함과 낙심과 절망에서 희망과 기쁨으로 가득 찬 이야기

180도 바뀐 삶의 이야기개발자가 된 나의 이야기 개발자가 되기까지.. 2022년 8월부터 현재 2024년 7월까지 무직, 백수..나의 상황은 아직도 취업준비중..현재 나이가 30대가 넘어가고 반도체 업계에서 일을 하고 퇴사한지 어언 2년   삼성전자 반도체 1차 협력업체로 2022년 7월까지 근무를 하고 그만 뒀다. 퇴사 사유는 내가 다녔던 회사에서 대우도 잘 받았고 팀에서도 인정 받았지만, 내가 이 회사에서 열심히 배우고 일을 해서 나의 인생의 커리어에 도움이 될 까? 했을 때 No였다. 그냥 공무원 느낌마냥 그 회사에서 계속 있으면서 매년 연봉 조금씩 올라가고 그 회사의 고인물로서 살아가면 삶에는 아무 문제 없이 살아갈 수 있었다.  가정을 꾸리고 먹고 살 수 있을 만큼의 연봉이었다. 소득세 신고 ..

끄적끄적.. 2024.07.19