알고리즘/항해99 알고리즘 34

우선순위 큐, 최대 힙, 최소 힙

1. 우선순위 큐우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조특징1. 높은 우선순위의 요소를 먼저 꺼내서 처리하는 구조2. 내부 요소는 힙으로 구성되어 이진트리 구조로 이루어져있음3. 내부구조가 힙으로 구성되어 있기에 시간복잡도는 O(NLogN) 4. 우선순위를 중요시해야하는 상황에서 주로 쓰임선언import java.util.PriorityQueue;import java.util.Collections;//낮은 숫자가 우선 순위인 int 형 우선순위 큐 선언PriorityQueue priorityQueueLowest = new PriorityQueue();//높은 숫자가 우선 순위인 int 형 우선순위 큐 선언PriorityQueue priorityQueueHighest = new Priority..

항해99 후기

1. 스터디를 찾게 된 계기항상 알고리즘 준비를 하였지만 매번 3일을 못갔다. 기억도 안나고 문제도 안풀게 되었다. 2. 99클럽 참여 경험일단 공부는 혼자하는거다. 하지만 같이 하는 사람이 있다는 생각이 있다보니 평소보다 더 열심히 할 수 있게 되었다. 3. 개인 성장 및 결과3일에서 3주이상의 지속성을 가지게 되어서 너무 행복하다. 앞으로 지속적으로 참여할 생각이다.후반에 회사일로 인해 조금 부족했지만 다음 기수가 시작되기 전에 정리해서 내걸로 만들거다!

항해99 5주차 복습 정렬

21일차 복습 내용1. map.getOrDefaultmap.getOrDefault(parts[1], 0)parts[1] 값이 존재하면 해당 값을 가져오고 아니라면 기본값 0을 반환한다.2. TreeMapTreeMap sortedMap = new TreeMap(map);map(예: HashMap map)을 오름차순 정렬된 TreeMap 으로 변환.map이 HashMap이면 기본적으로 순서가 없지만, TreeMap에 넣으면 키가 정렬된 상태로 저장됨.숫자는 값으로 문자는 유니코드로 정렬 *만약 내림 차순 정렬을 하고 싶다면TreeMap sortedMap = new TreeMap(Collections.reverseOrder());sortedMap.putAll(map); 22일차 복습 내용1. map.conta..

항해99 3주차 복습 스택/큐

11일차 복습 내용스택에 대한 내용으로 만들어서 사용하거나 혹은 자바 컬랙션을 사용할 수 있다. Stack stack = new Stack();로 선언한다.push(x) 스택에 x값 넣기pop 제일 최근에 들어간 값 제거peek 최근에 들어간 값 출력search(x) x의 인덱스 출력empty 현재 스택이 비었으면 True, 들어가 있으면 False를 출력해준다. 12일차 복습 내용배열에 값을 넣은 후 뒤에서 부터 최대 값이 변경 될때마다 count를 높이면 되는 쉬운 문제였다. 13일차 복습 내용QueueQueue q = new LinkedList();로 선언한다. offer(value), add(value) 메서드를 사용해서 값을 추가할 수 있다.차이가 있다면, add는 예외를 발생시키고, offer..

항해99 2주차 복습 해시

6일차 복습내용- HashHashMap map = new HashMap();map.put("apple", 100); /// key : valueSystem.out.println("apple의 값 " + map.get("apple")); /// get으로 값 출력하기map.remove("banana"); /// remove로 값 삭제map.containsKey("Banana") /// map 배열에서 banana를 출력map.containsValue(5) ///map 배열에서 5를 출력 7일차 복습내용- pow (제곱) 사용법에 대해서 배움public class Pow { public static void main(String[] args) { double result = Math.po..

해시 Hash

데이터를 효율적으로 저장하고 검색하기 위한 알고리즘Java 에선 HashMap, HashSet, Hashtable - 해시 알고리즘을 사용하여면 먼저 데이터의 해시 값을 계산해야 하는데, 하나의 객체 당 하나의 해시 코드가 생성 됨. Key-value 에서 key를 테이블에 저장할 때 key 값을 Hash Method 를 이용해 계산을 수행한 후, 그 결과값을 배열의 인덱스로 사용하여 저장하는 방식이다. 선언HashMap map = new HashMap();입력 map.put("apple", 100); /// key : valuemap.put("banana", 200); /// key에 값 넣기map.put("orange", 300);출력System.out.println("apple의 값 " + map...

항해99 알고리즘 7일차

package hanghee99;import java.math.BigInteger;import java.util.Scanner;public class BOJ15829_07 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int l = sc.nextInt(); String s = sc.next(); long total = 0; double pow = 1; for (int i = 0; i  문제가 길지만 하고 싶은 말은 r31로 하고 M의 값은 1234567891(알파벳의 수 * r의 자리 수 제곱) % M이다입니다. 각 알파벳의 숫자..

항해99 1주차 복습

1일차 복습내용 - 프로그래머스 사용법 : 입력은 s, 정답은 return 2일차,3일차 복습내용- Scanner 클래스의 next, hasNext, nextLine, hasNextLine 줄바꿈  next공백 전까지전체 줄을 읽지 않고, 오직 다음 "토큰"만 읽음공백을 기준으로 다음 "토큰"(단어)을 읽습니다.hasNexttrue 일때입력을 소비하지 않고, 단순히 더 읽을 수 있는 토큰이 있는지만 확인읽을 수 있는 "단어"가 있는지 확인하는 명령어nextLine\n 전까지줄 바꿈 문자를 소비하므로, 그 후에 또 nextLine()을 호출하면 새로운 줄을 읽음한 줄 전체를 읽습니다.hasNextLinetrue 일때입력을 소비하지 않고, 단순히 더 읽을 수 있는 토큰이 있는지만 확인읽을 수 있는 "줄"이..

항해99 알고리즘 3일차

package hanghee99;import java.util.Scanner;public class BOJ2675_03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); for (int i = 0; i  오늘의 문제는 문자열 반복 문제로 2중 for 문을 사용해서 금방 풀 수 있었다. 오늘은 저번의 nextInt를 활용한 문제 오류를 해결할 수 있었다.sc.nextInt()로 정수 입력을 받은 뒤 바로 sc.nextLine()을 호출하면, 줄바꿈 문자(\n)를 처리하지 못하고 빈 문자열이 저장되는 것을 생각하여 문제를 풀면 쉽게 풀..