본문 바로가기

전체 글

[프로그래머스 Java]가장 많이 받은 선물 해결과정1. 가공할 데이터모든 친구 A에 대해A가 모든 모든 친구와 선물한 개수 Map>A의 선물 지수Map2. 로직 수행 문제 설명 그대로 로직 수행하면 된다.- A, B 기록 유무는 A가 B한테 준 선물과 B가 A한테 준 선물이 모두 0인 경우. 따라서 A, B가 서로한테 준 선물이 동일한 경우에 포함된다. - A give는 A가 B에게 선물한 개수  주의목표가 제일 많이 선물받은 경우를 구해야하는 것이다. 따라서 친구 데이터 이중 루프를 돌때, 매번 A -> B 선물, B -> A 선물을 체크하면 출력은 답의 2배가 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354.. 더보기
[프로그래머스 자바] 유사 칸토어 비트열 문제 설명수학에서 칸토어 집합은 0과 1 사이의 실수로 이루어진 집합으로, [0, 1]부터 시작하여 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만들어집니다.남아는 칸토어 집합을 조금 변형하여 유사 칸토어 비트열을 만들었습니다. 유사 칸토어 비트열은 다음과 같이 정의됩니다.0 번째 유사 칸토어 비트열은 "1" 입니다.n(1 ≤ n) 번째 유사 칸토어 비트열은 n - 1 번째 유사 칸토어 비트열에서의 1을 11011로 치환하고 0을 00000로 치환하여 만듭니다.남아는 n 번째 유사 칸토어 비트열에서 특정 구간 내의 1의 개수가 몇 개인지 궁금해졌습니다.n과 1의 개수가 몇 개인지 알고 싶은 구간을 나타내는 l, r이 주어졌을 때 그 구간 내의 1의 개수를 return 하도록 solut.. 더보기
브라우저에서 URL 동작 방식 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 파일에 정.. 더보기
그래프 탐색 알고리즘 - DFS 와 BFS 비교 정의 어떤 한 그래프와 해당 그래프의 시작 정점이 주어졌을때, 시작점에서 간선(Edge, E)을 타고 이동할 수 있는 정점(Node/Vertex, V)을 모두 찾아야 하는 문제이미 지난 정점은 다시 방문하지 않는다. DFS(Depth First Search)그래프에서 한 노드에서 시작해서 모든 노드까지 방문하는 알고리즘 다차원 배열에서 각 칸을 방문할 때 깊이를 우선으로 방문하는 알고리즘 깊이가 무한히 깊어지면 스택오버플로우 발생하기에 깊이 제한을 두는 방법으로 처리 가능재귀함수로 짤 경우 Stack 메모리 초과날 수 있기 때문에 주의재귀함수 호출마다 함수와 매개변수를 생성하는 작업이 있기 때문에 시간이 조금 더 걸린다. BFS(Breadth FIrst Search) 다차원 배열에서 각 칸을 방문할 때 .. 더보기
그래프 탐색의 인접행렬과 인접리스트 비교 1. 인접행렬장점행렬을 사용하기 때문에 공간지역성 특징으로 탐색 속도가 더 빠르다. 연결된 노드 중 특정 노드를 탐색하는 접근 속도 O(1) 단점 위 그림처럼 O(N^2) 크기로 모든 노드 간에 간선 유무를 저장하게 된다. 방향성 있는 그래프라면 더욱 공간 낭비가 심해진다.  2. 인접리스트장점 꼭 필요한 간선만 표시하기 때문에 공간을 아낀다.단점 리스트로 관리하에 속도가 느리다. 연결된 노드 중 특정 노드를 탐색하는 접근 속도 O(N) 3. 비교 노드 수보다 간선의 수가 많아질수록 추천 인접행렬 추천간선이 많아질수록 인접리스트의 공간을 아끼는 장점이 줄어든다. 노드의 수가 노드 수보다 많을 때 인접 리스트 추천 공간을 아끼는 장점이 더욱 커진다.기업 알고리즘 테스트에서는? 아직까지는 위 차이를 구분해서.. 더보기
[백준 2805] 나무 자르기 문제상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다.목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15, .. 더보기
Spring Boot의 Java 버전 변경하기 (maven, Intellij) 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.. 더보기
HashMap Map 이터페이스를 구현한 구현체 중 하나 키와 값을 저장하는 자료구조 키와 값은 모두 객체다. int, char 와 같은 기본형은 들어올 수 없다. 값은 중복 저장 불가하여 저장하면 새로운 값으로 대체된다. 해싱을 사용하기에 데이터 검색에 뛰어난 성능을 가진다. 시간 복잡도 multi thread 환경에서는 사용하면 의도치않게 잘못된 값을 사용하게 되는 큰 문제 발생 대신 ConcurrentHashMap 사용해야한다. Hashmap의 key는 hash function을 거쳐 고유한 bucket index 생성하여 빠른 저장, 검색이 가능 중복된 index 가 생기는 것을 Hash 충돌이라 부른다. 충돌이 발생하면 내부적으로 entry간에 chaining 방식으로 해결하게 된다. (Java 8) 실제 값.. 더보기