-
[ํ๋ก๊ทธ๋๋จธ์ค/JAVA] H-IndexAlgorithm/Java 2025. 1. 24. 20:39
๐ ๋ฌธ์ ์์ฝ
[ ์ค๋ต ๋ ธํธ ]
โ ๊ธฐ์กด ์ค๋ต ์ฝ๋import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; // 1. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ Arrays.sort(citations); // 2. ๋ฐ๋ณต ํ์ ์ธ๋ ๋ฐ๋ณต๋ฌธ for (int j = 0; j < citations.length; j++) { int up = 0, down = 0; if (citations[j] > j) { up++; } else if (citations[j] < j) { down++; } if (up == down) { answer++; break; } } return answer; } }
๐ ๊ธฐ์กด ์ฝ๋์ ๋ฌธ์ ์ - ๋ฌธ์ ์กฐ๊ฑด ์๋ชป ์ดํด
- "h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด hํธ ์ด์์ด๊ณ ๋๋จธ์ง ๋ ผ๋ฌธ์ด h๋ฒ ์ดํ ์ธ์ฉ๋์๋ค๋ฉด h์ ์ต๋๊ฐ์ด ์ด ๊ณผํ์์ H-Index์ ๋๋ค." ์ด ๋ฌธ์ ์ ์กฐ๊ฑด์ "๋ ผ๋ฌธ์ด hํธ ์ด์์ธ ๋ ผ๋ฌธ์ ๊ฐ์ == ๋ ผ๋ฌธ์ด h๋ฒ ์ดํ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ ๊ฐ์"๋ก ์๋ชป์ดํดํ๋ค.
- ๊ธฐ์กด ๋ฌธ์ ์กฐ๊ฑด์ h์ ์ต๋๊ฐ์ ์ฐพ๋ ๊ฒ์ด๊ณ , ๋ฐ๋ผ์ "h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด hํธ ์ด์"์ธ ์กฐ๊ฑด๋ง ์ถฉ์กฑ์ํจ๋ค๋ฉด ๋๋จธ์ง ์กฐ๊ฑด์ ์๋์ ์ผ๋ก ์ถฉ์กฑํ๊ฒ ๋๋ค.
[ ์ ๋ต ์ฝ๋ & ์ฌ๋ฐ๋ฅธ ํ์ด ]
๐ ์ฌ๋ฐ๋ฅธ ํ์ด1ํ ์ธ์ฉ(1ํ์ด์): 1,3,5,6 => 4๊ฐ (1ํ์ดํ): 0,1 => 2๊ฐ -> 4ํธ์ ๋ ผ๋ฌธ์ด 1ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑx 2ํ ์ธ์ฉ(2ํ์ด์): 3,5,6 => 3๊ฐ (2ํ์ดํ): 0,1 => 2๊ฐ -> 3ํธ์ ๋ ผ๋ฌธ์ด 2ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑx 3ํ ์ธ์ฉ(3ํ์ด์): 3,5,6 => 3๊ฐ (3ํ์ดํ): 0,1,3 => 3๊ฐ -> 3ํธ์ ๋ ผ๋ฌธ์ด 3ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑo
1. "h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด hํธ ์ด์"์ธ ์กฐ๊ฑด๋ง ์ถฉ์กฑ์ํค๊ธฐ
- h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ ์ ≥ h ์กฐ๊ฑด์ ์ ํํ ๋ฐ์ํ๋ค.
- ์ด๋ h๋ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ citations.length - i๋ก ๊ณ์ฐํ๋ค.
2. ์กฐ๊ฑด ๋ง์กฑ ์ ์ข ๋ฃ
- if (citations[i] >= h) ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ H-Index๋ฅผ ์ฐพ์์ผ๋ฏ๋ก ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ
๐ ์ ๋ต ์ฝ๋import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; // ๋ฐฐ์ด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ Arrays.sort(citations); // [0, 1, 3, 5, 6] // citations[i]์์ i๊ฐ์ ์ฆ๊ฐ์ํค๊ณ ๋ ผ๋ฌธ์ ์๋ฅผ ๊ฐ์์ํค๋ฉด์ ๋น๊ต ํ์ ๋ // ์ธ์ฉ ํ์๊ฐ ๋ ผ๋ฌธ์ ์ ์ด์์ด ๋์์ ๋์ ๋ ผ๋ฌธ์ ์๊ฐ H-Index๊ฐ ๋๋ค // 1ํ ์ธ์ฉ(1ํ์ด์): 1,3,5,6 => 4๊ฐ // (1ํ์ดํ): 0,1 => 2๊ฐ // -> 4ํธ์ ๋ ผ๋ฌธ์ด 1ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑx // 2ํ ์ธ์ฉ(2ํ์ด์): 3,5,6 => 3๊ฐ // (2ํ์ดํ): 0,1 => 2๊ฐ // -> 3ํธ์ ๋ ผ๋ฌธ์ด 2ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑx // 3ํ ์ธ์ฉ(3ํ์ด์): 3,5,6 => 3๊ฐ // (3ํ์ดํ): 0,1,3 => 3๊ฐ // -> 3ํธ์ ๋ ผ๋ฌธ์ด 3ํ ์ด์ ์ธ์ฉ์ด๋ฏ๋ก ์กฐ๊ฑด ์ถฉ์กฑo for(int i = 0; i < citations.length; i++) { // ์ธ์ฉ๋ ๋ ผ๋ฌธ ์ // 5๊ฐ -> 4๊ฐ -> 3๊ฐ -> 2๊ฐ -> 1๊ฐ ์์ผ๋ก int h = citations.length - i; // citations[i] ๋ 0 -> 1 -> 3 -> 5 -> 6 ์์ผ๋ก if(citations[i] >= h) { answer = h; break; } } return answer; } }
๋ฐ์ํ'Algorithm > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/JAVA] [1์ฐจ] ์บ์ (2018 KAKAO BLIND RECRUITMENT ๋ฌธ์ ) (1) 2025.01.27 [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] 2016๋ (1) 2025.01.27 [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ํ๋ ฌ์ ๊ณฑ์ (0) 2025.01.23 [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) 2025.01.23 [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ํ ์ธํ์ฌ (1) 2025.01.22