본문 바로가기
728x90
728x90

알고리즘/자료구조5

우선순위큐(Priority Queue) [자료구조] ( 프로그래머스 LV2 .더맵게) https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자 이제 Queue는 아는데 위 문제와 같이 일정 기준으로 정렬을 계속해서 해줘야 하는 경우(우선순위가 존재하는 경우) Priority Queue를 써주면 더 편리하게 코드를 짤 수 있다. 우선순위 큐(Priority Queue) Queue는 부가적인 기능 없이 오직 먼저 들어온 데이터가 먼저 나가는 First In First Out (FIFO) 구조로 되어있다. 하지만 우선순위 큐는 들어간 순서.. 2023. 12. 5.
HashSet [자료구조] https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀면서 내가 이제까지 안 지식으로 풀기 어렵다는 생각이 들었다. 이제까지 ArrayList, Stack, HashMap , replaceAll 정규식 등 문제를 풀어가면서 새로운 자바 클래스들을 공부하고 그 도구를 활용해서 알고리즘을 풀었다. 하지만 이 문제는 안풀리는것이다 ㅠㅠ 그래서 결국 다른 사람들이 어떻게 풀었는지를 확인했더니 대부분 HashSet으로 풀었다. 아직 그에관한 지식.. 2023. 11. 15.
HashMap [자료구조] (프로그래머스 - 최빈값 구하기) 프로그래머스 - 최빈값 구하기 1. 1000개의 숫자의 빈도수를 저장하기위해 1000 길이를 갖는 배열을 만들어서 인덱스에 빈도수를 저장하는 방식으로 풀었다. 2. 가장 큰 빈도수가 중복되면 안되기에 처음에 제일큰 빈도수와 해당 숫자를 구하고 3. 그 빈도수를 -1로 지정하고 그 다음으로 큰 빈도수를 구했다. class Solution { public int[] idxnum; public int solution(int[] array) { int answer = 0; idxnum = new int[1000]; for(int a : array){ idxnum[a]++; } int max1cnt = 0; int max1num = 0; int max2cnt = 0; int max2num = 0; for(int .. 2023. 11. 2.
TreeMap [자료구조] ( 프로그래머스 - 전국 대회 선발 고사) https://school.programmers.co.kr/learn/courses/30/lessons/181851 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘을 풀다보니 프로그래머스 - 전국 대회 선발 고사에서 두개의 값을 쌍으로 저장하면 쉽게 풀릴 수 있다고 생각했다. 그래서 TreeMap에 대해 좀 더 자세히 알아보고 내것으로 만들려고 찾아보았다. TreeMap 이진트리를 기반으로한 Map 컬렉션이다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면, TreeMap은 키와 값이 저장된 Map, .. 2023. 11. 1.
Tree(트리)의 개념, 이진 트리 ,이진 트리 종류 [자료구조] 트리 : 두 지점의 연결관계로 구성되어지고 계층 관계가 존재한다는 것이 특징이다. 트리는 노드로 이루어진 자료구조로 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조이다. 트리에서 쓰이는 용어들을 공부해보자. 노드 : 각 지점을 의미하며 ( 정점이라고도 불린다. ) 간선 : 두 노드를 연결하는 선 ( 예지 라고도 불린다.) 루트 노드 : 트리에서 맨 꼭대기를 의미한다. 부모 자식 : 위에있는 것이 부모, 아래에 있는 것이 자식이라고 한다. 차수 : 특정 노드를 중심으로 자식이 몇 개 있는지를 의미한다. 깊이 : 루트 노드와 얼마나 떨어져있는지를 의미한다. 높이 : 트리에서 깊이가 가장 깊은 높이 , 루트노드의 깊이를 0이라 했을때 가장 긴 깊이에 1을 더한 값 리프 노드 : 자식을 가지고 있지 않은 .. 2023. 9. 1.
728x90
728x90