1. URL 분류: 브라우저는 URL을 schema(예: "http" 또는 "https"), domain(예: "www.example.com") 및 path(예: "/page.html")로 나눕니다.schema정의한 프로토콜을 통해 다른 앱과 통신doamin사이트에 액세스하는 데 사용되는 고유하고 기억하기 쉬운 주소IP 주소를 갖는 서버를 사용자가 쉽게 기억하고 찾을 수 있도록 만들어준 서비스path페이지에 대한 경로 2. DNS Query: 웹사이트가 아직 캐시되지 않은 경우 DNS 서버를 쿼리하여 웹사이트의 실제 IP 주소를 찾습니다.(캐시 확인) hosts 파일 확인ip 주소와 hostname 을 매칭시켜놓은 텍스트 파일이며, 해당 컴퓨터 안에선 이 파일이 우선권을 갖습니다. hosts 파일에 정..
정의 어떤 한 그래프와 해당 그래프의 시작 정점이 주어졌을때, 시작점에서 간선(Edge, E)을 타고 이동할 수 있는 정점(Node/Vertex, V)을 모두 찾아야 하는 문제이미 지난 정점은 다시 방문하지 않는다. DFS(Depth First Search)그래프에서 한 노드에서 시작해서 모든 노드까지 방문하는 알고리즘 다차원 배열에서 각 칸을 방문할 때 깊이를 우선으로 방문하는 알고리즘 깊이가 무한히 깊어지면 스택오버플로우 발생하기에 깊이 제한을 두는 방법으로 처리 가능재귀함수로 짤 경우 Stack 메모리 초과날 수 있기 때문에 주의재귀함수 호출마다 함수와 매개변수를 생성하는 작업이 있기 때문에 시간이 조금 더 걸린다. BFS(Breadth FIrst Search) 다차원 배열에서 각 칸을 방문할 때 ..
1. 인접행렬장점행렬을 사용하기 때문에 공간지역성 특징으로 탐색 속도가 더 빠르다. 연결된 노드 중 특정 노드를 탐색하는 접근 속도 O(1) 단점 위 그림처럼 O(N^2) 크기로 모든 노드 간에 간선 유무를 저장하게 된다. 방향성 있는 그래프라면 더욱 공간 낭비가 심해진다. 2. 인접리스트장점 꼭 필요한 간선만 표시하기 때문에 공간을 아낀다.단점 리스트로 관리하에 속도가 느리다. 연결된 노드 중 특정 노드를 탐색하는 접근 속도 O(N) 3. 비교 노드 수보다 간선의 수가 많아질수록 추천 인접행렬 추천간선이 많아질수록 인접리스트의 공간을 아끼는 장점이 줄어든다. 노드의 수가 노드 수보다 많을 때 인접 리스트 추천 공간을 아끼는 장점이 더욱 커진다.기업 알고리즘 테스트에서는? 아직까지는 위 차이를 구분해서..
문제상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다.목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15, ..
Spring Framework 4.5 에서 Spring Boot 2.7로 전환을 했다.그리고 Spring Boot 2.x 호환성을 고려해서 자바 버전도 JDK8에서 JDK11로 변경했다. (고 생각함) homebrew를 이용해서 자바 11을 설치했고 Intellij도 같이 변경했다. 그리고 시간이 지나서 pom.xml을 봤더니 compiler.source, compiler.target이 1.8로 설정되어 있어 모두 버전을 바꾼게 아니구나 생각이 들었다. 그래서 이번 기회에 수정하면서 다시 정리하려고 한다. 1. Spring Boot의 경우는 properties에 자바 버전을 추가해주면 된다. properties는 Spring Boot 애플리케이션의 설정을 정의하는데 사용한다.그럼 Spring Boo..
Map 이터페이스를 구현한 구현체 중 하나 키와 값을 저장하는 자료구조 키와 값은 모두 객체다. int, char 와 같은 기본형은 들어올 수 없다. 값은 중복 저장 불가하여 저장하면 새로운 값으로 대체된다. 해싱을 사용하기에 데이터 검색에 뛰어난 성능을 가진다. 시간 복잡도 multi thread 환경에서는 사용하면 의도치않게 잘못된 값을 사용하게 되는 큰 문제 발생 대신 ConcurrentHashMap 사용해야한다. Hashmap의 key는 hash function을 거쳐 고유한 bucket index 생성하여 빠른 저장, 검색이 가능 중복된 index 가 생기는 것을 Hash 충돌이라 부른다. 충돌이 발생하면 내부적으로 entry간에 chaining 방식으로 해결하게 된다. (Java 8) 실제 값..
1. 이진 탐색 정렬된 데이터에서 특정 값을 찾는 알고리즘탐색 범위를 반으로 줄여가며 찾기 떄문에 O(lgN) 으로 빠르게 동작한다. 만약 정렬된 데이터에 찾고자하는 수가 중복으로 있다면 가장 왼쪽의 원소를 찾는 방법을 lower bound 라 하며, 가장 오른쪽 원소의 다음 위치를 반환하는 방법을 upper bound라고 한다. 수열 {1, 2, 3, 3, 3, 4} 에서 3의 lower bound는 인덱스 2, uppder bound는 5다. 비슷하게 데이터를 반으로 분할하는 알고리즘으로 분할정복이 있다.하지만 분할정복은 문제를 부분적으로 해결하는 알고리즘으로 탐색이 목적이 아니다. 2. 탐색 과정탐색 범위 low ~ high를 정하고 low 루프에서 탐색 범위가 low > high 될 때까지 범위를..
https://www.acmicpc.net/problem/2003 풀이 이중루프로 i, j 탐색을 하면 N이 10^5이기 때문에 시간초과에 걸린다. 그래서 누적합 또는 투포인터로 풀면 통과할 수 있다. 1) 누적합 (prefix sum) 누적합으로 풀 수는 있는데 N이 더 컸더라면 누적합으로는 풀 수 없다. long[] pre = new long[N+1]; st = new StringTokenizer(br.readLine()); for(int i = 1 ; i
- Total
- Today
- Yesterday
- 백준
- 투포인터
- 문자열을 정수로 바꾸기
- 2018 카카오 공채
- 괄호 변환
- 가장 큰 정사각형 찾기
- 라면공장
- 짝지어 제거하기
- 카카오 2020 공채
- 찾아라 프로그래밍 마에스터
- 3954
- 17825
- 124 나라의 숫자
- 카카오2020 공채
- DP
- 단체사진 찍기
- 게리맨더링 2
- 2019 카카오 공채
- 17779
- 큰 수 만들기
- 주사위 윷놀이
- Brainf**k 인터프리터
- java
- 자바
- 정수 내림차순으로 배치하기
- 프로그래머스
- 오블완
- 후보키
- programmers
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |