map 6

[JAVA] 백준 원판 돌리기

탐색+구현 문제이다. 탐색 방식은 BFS방식으로 Queue에 넣어서 방향을 검사하는 것이다. 좌표값을 Queue에 넣는 방식을 새로 소개하겠다. Queue q = new LinkedList(); q.add(new int[]{i, j, map[i][j]}); 위의 코드처럼 Queue의 자료형에 배열을 넣어주면 임의의 배열을 통째로 넣을 수 있다. 따라서 위에서는 int[] = (x, y, 비교할 해당값) 을 큐에 넣어준 것이다. 그럼 위와 같은것을 언제 사용하는가? => 이중for문을 통해서 map을 한번 다 탐색하고 나서 다시 또 그 값을 찾아가야할때. 문제의 remove를 할때 탐색을 해서 bfs나 dfs를 통해 이웃하는 숫자의 값을 지워야한다. 백트래킹 방식으로 끝부분부터 지워야 탐색을하는데 지장이 ..

(2021카카오) 순위검색 Java

위 문제는 Map에 List를 추가하는 새로운 방식의 유형이다. Map의 Value값에 new ArrayList 하는 부분만 우선 참고하기 위해 서두에 올려놓겠다. 먼저 map.put(Key, new ArrayList())하는 부분이 하이라이트다. Map map = new HashMap(); map.putIfAbsent(sb.toString(), new ArrayList());//ArrayList일단 틀 만들어놓기 map.get(sb.toString()).add(v);//value에 코테점수를 Arraylist .add get을 이용하여 ArrayList를 불러오고, 해당 ArrayList에 추가해주는 방식이면 Map의 중복불가한 특징을 보완할 수 있다. 필자는 효율성테스트에서 실패했다. 더보기 null..

(2018카카오) 캐시 LRU(Least Recently Used) 알고리즘 Java

위 문제는 LRU(Least Recently Used)알고리즘을 이용한 방법이다. 대표적인 LRU 알고리즘의 문제로 꼽힌다. 사진출처: gomguard.tistory.com/115 페이지 교체 알고리즘 - LRU 페이지 교체 알고리즘 사회의 자원은 한정되어 있고 그 한정된 자원을 효율적으로 사용하기 위해 각종 법과 규칙이 존재합니다. 눈에 확연히 보이지 않아 무한할 것만 같은 컴퓨터 자원도 사실 gomguard.tistory.com 해쉬맵을 이용한 코드다. 코드는 길지만, 실행속도는 빠른편이다. 여기서도 toLowerCase()로 소문자로 모두 변환해주었다. 각 상황을 if문에 따라 나누었는데, cacheSize=0인경우를 고려하지않았었는데, 개인적으로 문제를 꼼꼼히 읽어야겠다는 생각을 했다. impor..

(2020카카오) 튜플 Java

각 문자열에 대하여 숫자를 추출해서 넣는다 각 숫자에 대하여 몇번 나왔는지 카운팅 해서 카운트가 높을수록 먼저 출력된다(우선순위 上) 그래서 떠오른 것이 Map, Set을 이용하여 각 문자열("111" , "22")에 대하여 Integer로 카운팅한값을 묶어서 증가시키는 방법으로 진행하였다. import java.util.*; class Solution { public int[] solution(String s) { Map map = new HashMap(); String numStr = ""; for (int i = 2; i < s.length(); i++) {//0번째랑 마지막 괄호 제외 if(s.charAt(i) == '{' || s.charAt(i) == '}' || s.charAt(i) == '..

List, Map,Set 정리

//맵 : key, value Map map = new HashMap(); //셋 HashSet hash = new HashSet(); 인터페이스 구현 클래스 특징 List LinkedList Stack Vector ArrayList 순서가 있는 데이터의 집합, 데이터의 중복을 허용함 Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음 Map HashMap TreeMap HashTable Properties 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값의 중복을 허용함 ArrayList의 특징 동기화를 보장해주지 않는다. 배열에 동적 메모리 증가 기능을 구현한 클래스이다. 동기화 지..