๋ฌธ์ 1๏ธโฃ (๐ ๋ฆฌํธ ์ฝ๋ _ ์ข์ ์ง์ ์)
๐ก IDEA : ๋ฐฐ์ด ์์ ๊ฐ์์ ๊ฐ์๋ฅผ HashMap ์ ์ ์ฅํ ํ ์ ์ฒด๋ฅผ ๋๋ฉด์ ์กฐํฉ์ ์๋ฅผ ๋ํ๋ค. ์ด ๋ ์กฐํฉ์ n * (n-1) / 2 ๋ก ๊ณ์ฐ ๊ฐ๋ฅํ๋ค.
import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;
class Solution {
public int numIdenticalPairs(int[] nums) {
// (1) ๋ฐฐ์ด ์ ์ ์ฒด ๊ฐ ์ธ๊ธฐ
HashMap<Integer, Integer> cnt = new HashMap<>();
int val = 0;
for (int num : nums) {
if (cnt.get(num) == null) {
cnt.put(num, 1);
}
else {
val = cnt.get(num);
cnt.put(num, ++val);
}
}
// (2) ์กฐํฉ ๊ณ์ฐ
Set<Integer> keySet = cnt.keySet();
int answer = 0;
int n = 0;
for (Integer key : keySet) {
n = cnt.get(key);
answer += n*(n-1)/2;
}
return answer;
}
}
์ฝ๋ ๊ฐ์ ์ฌํญ โ : HashMap ๊ฐ ์ถ๊ฐ
โก๏ธ ๊ธฐ์กด ์ฝ๋์์๋ get ๋งค์๋๋ฅผ ํตํด HashMap ์์ ํด๋น ๊ฐ์ด ์๋์ง ํ์ธํ๊ณ , ์๋ค๋ฉด ํด๋น ๊ฐ์ ๊ฐ์ ธ์์ 1์ ๋ํ ๋ค ๋ฃ๊ณ , ์๋ค๋ฉด ๋ฐ๋ก 1์ ๋ฃ์๋ค. ํ์ง๋ง getOrDefault ๋งค์๋๋ฅผ ํ์ฉํ๋ฉด ๊ธฐ์กด ๊ฐ์ด ์๋ค๋ฉด ํด๋น ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์๋๋ฉด ์ง์ ํ ๊ฐ์ ๊ฐ์ ธ์ค๋๋ก ํ ์ ์๋ค.
// ๊ฐ์ ์
int val = 0;
for (int num : nums) {
if (cnt.get(num) == null) {
cnt.put(num, 1);
}
else {
val = cnt.get(num);
cnt.put(num, ++val);
}
// ๊ฐ์ ํ
for (int num : nums) {
cnt.put(num, cnt.getOrDefault(num, 0)+1);
}
์ฝ๋ ๊ฐ์ ์ฌํญ โก : HashMap ๊ฐ ํ๋์ฉ ๊บผ๋ด๊ธฐ
โก๏ธ ๊ธฐ์กด ์ฝ๋์์๋ keySet ๋งค์๋๋ฅผ ํตํด HashMap ์ key ๊ฐ๋ค์ ๋ถ๋ฌ์จ ํ for ๋ฌธ์ ํตํด์ key ๊ฐ์ ๋ฐํ์ผ๋ก ๊ฐ์ ๋ถ๋ฌ์๋ค๋ฉด, values ๋งค์๋๋ฅผ ํตํด ๋ฐ๋ก value ๋ค์ ์ ๊ทผํ๋ค.
// ๊ฐ์ ์
Set<Integer> keySet = cnt.keySet();
int answer = 0;
int n = 0;
for (Integer key : keySet) {
n = cnt.get(key);
answer += n*(n-1)/2;
}
// ๊ฐ์ ํ
int answer = 0;
for (int count : cnt.values()) {
answer += count * (count - 1) / 2;
}
์ต์ข ์ฝ๋
class Solution {
public int numIdenticalPairs(int[] nums) {
// (1) ๋ฐฐ์ด ์ ์ ์ฒด ๊ฐ ์ธ๊ธฐ
HashMap<Integer, Integer> cnt = new HashMap<>();
for (int num : nums) {
cnt.put(num, cnt.getOrDefault(num, 0)+1);
}
// (2) ์กฐํฉ ๊ณ์ฐ
int answer = 0;
for (int n : cnt.values()) {
answer += n*(n-1)/2;
}
return answer;
}
}
๋ฌธ์ 2๏ธโฃ (๐ ๋ฆฌํธ ์ฝ๋ _ XOR ์ฐ์ฐ์ ํตํ ์๋ ๋ฐฐ์ด ์ฐพ๊ธฐ)
๐ก IDEA : Java ์์ ์ง์ํ๋ XOR ์ฐ์ฐ์ธ ^ ๊ธฐํธ๋ฅผ ํตํด ํด๊ฒฐํ์๋ค.
class Solution {
public int[] findArray(int[] pref) {
int[] answer = new int[pref.length];
answer[0] = pref[0];
for (int i=1; i<pref.length; i++) {
answer[i] = pref[i-1] ^ pref[i];
}
return answer;
}
}'TIL ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| TIL (2024.06.20) (0) | 2024.06.21 |
|---|---|
| TIL (2024.06.16) (0) | 2024.06.17 |
| TIL (2024.06.14) (0) | 2024.06.15 |
| TIL (2024.06.13) (1) | 2024.06.15 |
| TIL (2024.06.12) (0) | 2024.06.13 |