캐시 [프로그래머스]
1) 문제 접근 방법 - 캐시 사이즈가 0인 경우는, cities의 길이에 5 곱한 값을 반환합니다. -> 왜냐면, cache hit이 발생할 수 없고, 매번 cache miss가 발생하기 때문입니다. - 캐시 사이즈가 0이 아닌 경우는, (1) map이 city를 포함하고 있는 경우에는, cache hit이므로 answer에 1을 더하고, 최신 방문 idx를 업데이트합니다. (2) map이 city를 포함하고 있지 않은 경우에는, (2-1) map이 꽉 차지 않았다면, 그냥 map에 도시명과 최신 idx를 추가합니다. (2-2) map이 꽉 차 있다면, map의 keySet()을 통해 map을 순회하면서, lru인 string을 찾습니다. -> lru인 string을 찾는 기준은, 가장 idx(valu..
뉴스 클러스터링 [프로그래머스]
1) 문제 접근 방법 - str1, str2에서 각각 문자들로 구성된 것만, HashSet(set1, set2)에 저장한다. - 그 다음에 set1을 순회하면서, set2에 똑같은 것이 있으면, 삭제하면서, intersection와 union에 추가한다. - 다음은 set2을 순회하면서, 남은 것들을 union에 추가한다 - union의 사이즈가 0인 경우는, 65536을 그대로 반환한다 - union의 사이즈가 0이 아니면, rate를 계산한 후에, 65536을 곱하고, 그것의 내림 값을 반환한다. import java.util.*; class Solution { // 2개의 HashSet을 선언한다. public HashSet set1; public HashSet set2; // check 메소드를 ..
다트 게임 [프로그래머스]
1) 문제 접근 방법 - 스택을 활용하는 것이 핵심인 문제이다. - 1제곱, 2제곱, 3제곱 값은 Math.pow를 통해서 계산한 후에, int로 변환해서 스택에 저장합니다. - *가 나왔을 때는, 스택에서 값을 꺼내서 2배를 해줍니다. -> 이 때, 스택에 들어있는 값이 1개일 때와, 2개 이상일 때를 구분해서 계산해줍니다. - #가 나왓을 때는, 스택에서 값을 꺼내서 -1배를 해줍니다. - 숫자들은 String에 추가해놓고, S, D 혹은 T가 나왔을 때, int로 변환해서 계산한 후, 스택에 저장합니다. - 최종적으로 저장된 값들을 모두 스택에서 꺼내서 더해줍니다. import java.util.*; class Solution { public int solution(String dartResult)..
실패율 [프로그래머스]
1) 문제 접근 방법 - 각 스테이지마다, 해당 스테이지에 도달한 값을 카운트해주고, 그 다음에 해당 스테이지보다 크거나 같은 값을 total에 더해준 후에, 두 값으로 실패율을 구해서 ArrayList에 저장한다. - ArrayList에 저장할 때는, 인덱스와 실패율을 Pair로 만들어서 저장한다. - 그 다음에 실패율을 기준으로 내림차순 정렬을 하기 위해서, Collecitons.sort(arr, (o1, o2) -> Double.compare(o2.rate, o1.rate));를 해준다. - 여기서 중요한 것이, 스테이지에 도달한 유저가 없는 경우에는, 해당 스테이지의 실패율은 0으로 정의해야 하는데, 이 케이스를 따로 분리해줘야 한다. - 그 다음에 내림차순 정렬 순서의 인덱스를 결과에 저장해준다..
오픈채팅방 [프로그래머스]
1) 문제 접근 방법 - Enter, Leave일 때만, result에 포함되면 됩니다. - Enter, Change 로 입력될 때, HashMap에 저장해서 관리합니다. -> 또한, Enter혹은 Change를 통해서 닉네임이 변경되면, HashMap에 반영하였습니다. - String을 쪼갤 때는 split을 사용합니다. - ArrayList arr에는 Enter, Leave일 때의 id를 저장합니다. -> 이것을 저장하는 이유는, 나중에 Result에 String으로 만들 값을 넣기 위해서입니다. - 최종적으로 arr을 순회하면서, 해당 id에 맞는 Nickname을 HashMap에서 찾아서, 결과 String을 만들어서 result에 추가합니다. import java.util.*; // id와 ac..