2364 - Count Number of Bad Pairs (Java)
·
LeetCode
문제https://leetcode.com/problems/count-number-of-bad-pairs/description/  풀이문제는 i 일 때 j - i != nums[j] - nums[i]. 인 쌍을 몇 개 찾느냐인데 이 문제는 반대로 생각해야 쉽게 풀린다.  우선 위 식을 "정리" 해볼 수 있는데, 정리하면 nums[j] - j != nums[i] - i 형태로 만들 수 있다. 이제 반대로 생각해보자. 총 쌍의 개수에서 우리는 위 조건에 부합하지 않는 쌍을 찾으면 답을 구할 수 있다.위 조건의 반대는?  j > i 일 때  nums[j] - j == nums[i] - i 이다. 이 말을 풀어보면 내가 j일 때 나보다 작은 값 i 가 있을때 nums[j] - j == nums[i] - i 를 ..
380 - Insert Delete GetRandom O(1) (Java)
·
LeetCode
문제https://leetcode.com/problems/insert-delete-getrandom-o1/?envType=study-plan-v2&envId=top-interview-150  풀이set 의 형태에서, random 값을 뽑아낼 수 있는 자료구조를 만드는 문제이다. 우선 insert 와 remove 를 O(1)에 할려면 set이나 map과 같은 자료구조는 필수적으로 필요하다. 그리고  random 값을 O(1)로 뽑아내기 위해서는 리스트나 배열이 필수적이다. 해당 배열의 사이즈를 활용해서 랜덤 인덱스를 뽑고, 그 값에 한 번에 접근할 수 있으니 말이다. 난 map 과 배열의 조합으로 문제를 해결했다.  우선 배열의 끝을 가리키는 lastIdx 를 선언하고, 이를 -1로 초기화 한다. 다음은 ..
1765 - Map of Highest Peak (Java)
·
LeetCode
문제 https://leetcode.com/problems/map-of-highest-peak/description/  풀이설명이 조금 장황하지만, 단순 bfs 문제이다. 물이 시작하는곳을 체킹한다음,queue에 각각의 좌표를 넣어주고 그 지점에서부터 bfs 탐색을 시도하면 된다. 방문여부로 더 퍼트릴지를 검사하고, 퍼트릴때 값은 기존값+1로 선언해서 진행하면 된다. 코드import java.util.*;// 1로부터 bfs 를 수행하면 끗class Solution { static class Node { public int x; public int y; public Node (int x, int y){ this.x = x; ..