일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- javascript
- 네트워크
- 정렬알고리즘
- 코딩테스트
- 자바
- HTTP상태
- 탐욕알고리즘
- 개발자
- SQLD
- ChatGPT
- java
- 그리디알고리즘
- 백준
- Python
- Spring
- 파이썬
- 서버
- API
- SQLP
- jsp
- HTTP
- 알고리즘코딩테스트
- 챗지피티
- codingtest
- 알고리즘
- SQL
- 프로그래머스
- JQuery
- 하루코딩
- 개발
- Today
- Total
목록코딩테스트/Study (13)
개발자's Life
버블 , 선택, 삽입, 퀵, 병합, 기수 정렬 버블정렬 인접 요소끼리 swap 연산을 수행하며 정렬 정렬 알고리즘보다 속도가 느리면 로직이 단순한 정렬 알고리즘 이다. 오름차순으로 정렬시 인접요소인 0 인덱스와 1 인덱스를 비교로 시작한다. 오름차순 시 비교하여 왼쪽값이 더 높을 경우 자리를 swap 하고 왼쪽값이 낮을 경우는 그대로 유지를 하고 다음 인덱스 비교로 넘어간다. (0 - 1 비교, 1 - 2 비교, 2 - 3 비교 ....) 53 23 4 24 5 12 53 - 23 비교하면 왼쪽값:53 이 더 커서 swap ▽ 23 53 4 24 5 12 53 - 4 비교하면 왼쪽값:53 이 더 커서 swap ▽ 23 4 53 24 5 12 53 - 24 비교하면 왼쪽값:53 이 더 커서 swap ▽ 2..

Stack(스택) 은 후입선출, 저장소 형태는 아래와 같고 나중에 들어온 데이터가 먼저 나가는 구조이다. 위 이미지를 확인하면 맨윗 부분에 나중에 들어온 값이 먼저 나가는것을 알 수 있고 삽입과 삭제가 일어나는 부분을 Top 이라고 한다. 연산에 대해 정리는 아래외 같다 Top: 삽입/삭제가 일어나는 위치 push : Top 위치에 데이터를 삽입하는 연산 pop : Top 위치의 데이터를 삭제하고 확인하는 연산 peek : Top 위치의 데이터를 단순히 확인하는 연산 Queue(큐) 는 선입선출, 저장소 형태는 아래와 같고 먼저 들어온 데이터가 먼저 나가는 것이다. 위 이미지를 보면 먼저 들어온 데이터가 나가는것을 알 수 있다. 새값이 들어오는 왼쪽 위치를 rear 이라 하고 나가는 위프를 Front 라..

구간 합 배열은 우선 기존 제시되는 배열을 순차적으로 더해 나타내는 배열이다. 아래 배열이 기본적으로 주어져 있다. int[] arr = { 1, 18, 21, 3, 6}사이즈 5인 배열에 1, 18, 21, 3, 6 이 있고 이 배열을 기준으로 구간합 배열은 만들어준다. S[i] = S[i - 1] + arr[i] 공식으로 만들어지고 만들어지는 코드는 아래와 같다. (폰으로 적는 손코딩이라 돌려보지는 않은 코드입니다..ㅠ)int[] arr_sum = new int[5]; // 인덱스 0 번째는 미리 arr 0번 인덱스로 초기화 arr_sum[0] = arr[0]; for(int i = 1; i < are.length; i++){ arr_sum[i] = arr_sum[i - 1] + arr[i]; }그렇..
코딩테스트에서도 자주 사용하는 배열과 리스트! 두 자료구조를 정확히 이해하고 문제의 요구사항에 맞게 잘 사용해야 한다. 배열은 연속 공간에 값이 채워지는 형태의 자료구조이고 인덱스를 통해 참조할 수 있다. 배열은 삽입, 삭제 할려면 인덱스의 값을 옮기고 삽입/삭제를 해야해 까다로운 작업이다.. 배열 길이는 초기화할때 꼭 선언이 되어야 한다. 리스트는 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조이다. 인덱스가 없어서 Head 포인터부터 순서대로 접근해야 한다. 이로 인해 접근 속도가 느리다. 삽입/삭제 연산속도가 빠르고 선언할 때 길이를 별도로 지정하지 않아도 된다. 배열과 리스트는 서로 반대인 부분이 많아 상황에 맞게 사용하면 되는데 주로 배열을 사용을 한다. 리스트는 크기가 변하는 데이..
디버깅은 다들 알지만 잘 사용하지 않는게 문제, 로그를 찍는거보다 더 디테일한 정보를 확인할 수 있다. 어느 IDE 든 비슷하게 실행이 되고 중단점을 지정하게 되면 중단점까지 실행할 수 있고 추적을 위한 변숫값도 지정이 가능하다. 변숫값 이외에 원하는 수식을 입력해 논리 오류 파악도 가능하다! 실제로 Value 를 나타내는 부분에서 변수들을 이용하여 산출하여 결과를 도출도 할 수 있다. 코딩테스트는 문제 발생시 로그로 찾는 시간보다 디버깅으로 찾는 시간이 더 빠르다. 왜냐하면 한 부분만 보는게 아니라 전체적인 흐름을 보기 때문에 더 빠르게 찾을 수 있다. (한번에 풀리면 다행이지만 한번 막혔을 때 문제인 부분을 잘 파악하여 해결해야 한다.) int 사용 경우 어느순간 갑자기 음수로 찍히는 경우가 있다...

(TMI) 최근 정말 가고싶었던 회사에 코딩테스트를 보았는데 시간복잡도 처리를 제대로 하지 못하여 시간 분배를 못하였다...... 결과가 어떻든 계속 도전할거다 !! 화이팅!!! 시간 복잡도 유형 - 빅-오메가 : 최선일때 연산 횟수 (예 : 반복문 100번 중 0이 가깝게 끝날때) - 빅-세타 : 보통일때 연산 횟수 (예 : 반복문 100번 중 중간쯤 끝날때) - 빅-오 : 최악일때 연산 횟수 (예 : 반복문 100번 중 끝자락에 끝날때) : 항상 최악을 염두해두어야 한다. 강의 내용 중 '빅-오' 인 최악일때를 염두해두어야 합니다. 주어지는 입력값에 조건이 주어지고 그 조건을 계산하여 횟수를 대략적으로 파악이 가능합니다.(대략 1억회 : 1초) 여러가지 시간 복잡도가 있다. 알고리즘마다 시간 복잡도를..