๐ก ๋ฌธ์
์ต๋น๊ฐ์ ์ฃผ์ด์ง ๊ฐ ์ค์์ ๊ฐ์ฅ ์์ฃผ ๋์ค๋ ๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ ์ ๋ฐฐ์ด array๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋น๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์. ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ๋ฉด -1์ return ํฉ๋๋ค.
์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ :
1. ์ ๋ ฅ๋ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ฑ์ฅ ํ์(๋น๋์)๋ฅผ Map์ ์ ์ฅํ๋ค.
2. Map์์ ์ต๋น๊ฐ์ ์ฐพ์์ ๋ฐํํ๋ค. ์ด๋, ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ -1์ ๋ฐํํ๋ค.
์นด์ดํธ๋ฅผ ์ํด ์ต๋น๊ฐ์ ์ฐพ์ ๋๋ ๊ฐ key-value ์์ ์ํํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ ๊ฐ์ ์ฐพ๋๋ค. ๊ฐ ์์๋ฅผ ํค(key)๋ก, ๋ฑ์ฅ ํ์๋ฅผ ๊ฐ(Value)๋ก ์ ์ฅํ์ฌ, ์ํ๊ฐ ๋๋ ํ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ ์์๋ฅผ ์ฐพ์ ๋ฐํํ๋ค.
์๊ฐ ๋ณต์ก๋: O(n)
- ์ ๋ ฅ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ n์ด๋ผ๊ณ ํ ๋, ์ ๋ ฅ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ๊ฐ ์์์ ๋น๋์๋ฅผ Map์ ์ ์ฅํ๋ ๊ณผ์ ์์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ค.
- HashMap์ ์ด์ฉํด ๊ฐ ์์์ ๋ฑ์ฅ ํ์๋ฅผ ์นด์ดํธํ๋ ๋ฐ์๋ O(n)์ ์๊ฐ์ด ์์๋๋ค. (์ต๋น๊ฐ์ ์ฐพ๋ ๊ณผ์ )
- ์ด ์๊ณ ๋ฆฌ์ฆ์ ์๋์ ์ผ๋ก ๊ฐ๋จํ๋ฉฐ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค. ๊ทธ๋ฌ๋ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํด์ง ์ ์๋ค.
๐ ๋ด ๋ต์
public static int solution2(int[] arr) {
// ๋น๋์๋ฅผ ์ ์ฅํ Map
Map<Integer, Integer> freqMap = new HashMap<>();
// ๊ฐ์ฅ ๋์ ๋น๋์์ ํด๋นํ๋ ์์๋ฅผ ์ ์ฅํ ๋ณ์
int maxFreq = 0;
int mode = -1; // ์ต๋น๊ฐ์ด ์๋ ๊ฒฝ์ฐ -1 ๋ฐํ
// ์
๋ ฅ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ๋น๋์ ๊ณ์ฐ
for (int i: arr) {
// ํ์ฌ ์์์ ๋น๋์ ๊ณ์ฐ
int freq = freqMap.getOrDefault(i, 0) + 1;
// ๋น๋์ Map์ ์ ์ฅ
freqMap.put(i, freq);
// ํ์ฌ ์์์ ๋น๋์๊ฐ ์ต๋น๊ฐ์ ๋น๋์๋ณด๋ค ๋์ ๊ฒฝ์ฐ
if (freq > maxFreq) {
// ์ต๋น๊ฐ ๋น๋์์ ํด๋นํ๋ ์์ ์
๋ฐ์ดํธ
maxFreq = freq;
mode = i;
} else if (freq == maxFreq) {
mode = -1; // ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒจ์ฐ -1 ๋ฐํ
}
}
return mode;
}
public static void main(String[] args) {
// ์
๋ ฅ ๋ฐฐ์ด
int[] arr = {1,2,3,4,4,4,5,5,6,6};
// ์ต๋น๊ฐ ์ฐพ๊ธฐ
int mode = solution2(arr);
System.out.println("์ต๋น๊ฐ: "+mode);
}
}
for๋ฌธ์ผ๋ก ๊ตฌํ
public int solution1(int[] sides) {
// ์ต๋น๊ฐ, ๊ฐ๋ณ ๊ฐฏ์ ์ ์ฅ, ์ต๋๊ฐ
int[] max = new int[1001];
int answer = 0; // ์ต๋น๊ฐ
// ์ต๋น๊ฐ ๊ตฌํ๊ธฐ
for (int i : sides) {
if (sides.length != 1) {
if (sides[i] == sides[i + 1]) {
//max[sides[i]];
}
}
else { answer = sides[i]; }
}
// ์ต๋น๊ฐ ์ค๋ณต ํ์ธ
int temp = 0;
for(int i : sides) {
// if(max[i] == frequent[j]) temp++;
if(temp > 1) answer = -1;
}
return answer;
}
'๐ Algorithm > PGS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฐ์ด ์๋ฅด๊ธฐ (JAVA) (0) | 2023.03.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ง์๋ ์ซ์ด์ (JAVA) (1) | 2023.03.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ค์๊ฐ ๊ตฌํ๊ธฐ (JAVA) (0) | 2023.03.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ถ์์ ๋ง์ (JAVA) (0) | 2023.03.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฐ์ด ์์์ ๊ธธ์ด (0) | 2023.03.08 |