본문 바로가기

분류 전체보기227

Linked List array list와 다르게 메모리에 저장될 때 나란히 저장되지 않을 수 있다. 그래서 인덱스가 노드마다 지정되어있지 않음 Big(O) linked list에서 n은 노드의 수라고 생각하면 된다. append(adding sth to the end) 노드가 몇개이든 바뀌는 게 없음 ⇒ 0(1) remove last node linked list의 연결 방향은 반대로 가는 게 불가능 예를 들면 여기서 7 노드를 없앤다면 tail을 23 노드로 옮겨야 하는데 반대로 추적할 수 없기 때문에 head부터 반복문을 돌려서 마지막 노드를 찾아야 함. n이 클수록 반복문 돌려야 하는 횟수도 늘어나기 때문에 ⇒ O(n) remove first 여기서 11 노드를 삭제한다고 하면 head를 11노드 다음에 있는 노드로 .. 2023. 7. 28.
classes & pointers classes 필드와 생성자로 구성이 되어있다. 클래스는 비유를 하자면 쿠키를 만드는 틀이라고 할 수 있다. 클래스의 생성자로 클래스의 인스턴스들을 생성하여 쓸 수 있다. 자료구조에서 클래스가 어떻게 쓰이냐 예를들면 linkedList 클래스가 있으면 append, remove 와 같은 기능들이 정의되어있다. 그것을 쓰기위해 우리는 그저 linkedList 생성자를 통해 linkedList의 인스턴스를 생성해서 쓰면된다. pointers 이것을 이해하기 위해 먼저 java의 데이터 타입을 알아두면 조금 수월하다. 포인터가 아닌경우 직접 값을 넣어줄때. 기본 데이터타입(primitive type)은 값복사가 일어난다. int a = 11; int b = a; a = 22; //result // a = 22.. 2023. 7. 21.
빅오 Big(O) Big O 표기법(Big-O notation)은 코드가 얼마나 효율적으로 수행되는지에 대해 수학적으로 계산해서 나타내는 수치입니다. 코딩인터뷰 단골질문! 빅오표기법은 시간 복잡도와 공간 복잡도를 나타내는데에 쓰입니다. 시간복잡도(time complexity) - 해당 코드가 실행되는 데에 걸리는 시간 공간복잡도(space complexity) - 해당 코드가 실행될때 메모리를 차지하는 정도를 나타냄 시간 복잡도를 표기하는 3가지 방식 Ω(omega) 해당 코드의 최상 실행시간 θ(theta) 평균 실행시간을 뜻함 O(omecron) 최악 실행시간 그러므로 Big-O는 항상 최악케이스에 해당합니다. 평균빅오는 몇이냐, 최상의 빅오는 잘못된 표현. 빅오 표기법 n은 입력받은 값의 크기를 나타냄. 1. O(n.. 2023. 7. 19.
bitwise operators bitwise operator num & 1 둘의 바이너리를 비교해서 끝의 숫자가 0인지 1인지 분별 1이 바이너리로 끝자리가 1이니까... 비교하는 숫자가 만약 홀수이면 끝자리가 1일것이므로 값은 1이 나올것이고, 짝수이면 0이니까 값은 0이 나올 것이다. 이걸로 짝수 홀수 구별 가능. 그리고 어떤수를 나누기2 하면 바이너리로는 비트들이 오른쪽으로 한칸씩 움직이는 거라서 num >> 1 이렇게 해주면 그 수의 나누기2의 값을 얻을 수 있다. https://leetcode.com/explore/learn/card/the-leetcode-beginners-guide/692/challenge-problems/4425/ Account Login - LeetCode Level up your coding skil.. 2023. 7. 12.
Leetcode 시작 난 사실 해외취업을 하고싶다. 근데 해외취업 하려면 코테는 거의 필수... 근데 최근 이직생각이 났는데 생각해보니 그냥 평범한 이직을 하려고 해도 코테는 거의 필수이다. 안하는 곳 골라갈 수도 있지만 음... 그래도 이왕이면 좋은 회사 가고싶다^^ 그래서 코테연습 이제부터 조금씩 하려고 한다. 사실 요즘 좀 한가해서 오랜만에 푸니까 좀 재밌다 ^^. 완전 왕초보꺼 시작했지만.... 암튼 이 재미가 오래 갔으면 좋겠다 ^^ 2023. 7. 11.
Spring boot AutoConfiguration 자동구성 작동 원리 이 글은 김영한님의 스프링부트 핵심원리와 활용 강의를 듣고 정리한 것입니다. 자동구성 파트 스프링부트의 핵심 기능 중 하나인 자동구성 AutoConfiguration 이것의 작동 원리를 이해하려면 2가지만 알면 된다. @Conditional @AutoConfiguration --- @Conditional 먼저 @Conditional 부터 정리해 봐야겠다 autoconfiguration 디펜던시 안을 보면 많은 것들이 자동으로 등록되게 되어있다. 그중 하나인 JdbcTemplate을 보면 @ConditionalOnMissingBean이 있다. 이것의 의미는 지정한 클래스아님 인터페이스의 빈이 없으면 어노테이션이 적용된 클래스를 빈으로 등록하겠다는 것이다. 어노테이션에 들어가보면 @Conditional 로 .. 2023. 7. 7.
728x90