1. ๋ฌธ์ œ

  • ๋ฐฐ์—ด๋งŒ์„ ์‚ฌ์šฉํ•ด์„œ ์•„๋ž˜์˜ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์™„์„ฑํ•˜์„ธ์š”
  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ˜๋ณต๋œ ์ˆซ์ž์™€ ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ๋ฐ˜๋ณต๋œ ๋นˆ๋„์ˆ˜๋ฅผ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์™„์„ฑํ•˜์„ธ์š”
    • ex) ๋ฐฐ์—ด์—์„œ 2๊ฐ€ 4๋ฒˆ ๋‚˜์˜จ ๊ฒฝ์šฐ, [2, 4] ๋ฅผ ๋ฆฌํ„ด
  • ํŠน์ • ์ˆซ์ž๊ฐ€ ๋™์ผํ•œ ๋นˆ๋„์ˆ˜๋กœ ๋‚˜์™”๋‹ค๋ฉด ์ œ์ผ ์ž‘์€ ์ˆซ์ž์™€ ๋นˆ๋„์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค

import java.util.*;

public class Assignment01 {
  public static void main (String[] args) {
        int[] tc1 = new int[]{1, 2, 3, 2, 2, 4, 5, 2, 6, 4};
        int[] tc2 = new int[]{1, 2, 3, 4, 5};
        int[] tc3 = new int[]{1, 2, 2, 3, 3};

        System.out.println(Arrays.toString(solution(tc1))); // [2, 4]
        System.out.println(Arrays.toString(solution(tc2))); // [1, 1]
        System.out.println(Arrays.toString(solution(tc3))); // [2, 2]
  }
  public static int[] solution(int[] arr) {
     int maxCount = 0; //์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜
     int minNumber = Integer.MAX_VALUE; // ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์˜ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
     
     //๋ฐฐ์—ด ์ˆœํšŒ
     for (int i = 0; i < arr.length; i++) {
        int count = 0;
        
        // ํ˜„์žฌ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ณ„์‚ฐ
        for (int j = 0; j < arr.length; j++) {
            if (arr[i] == arr[j]) {
                  count++;
            }
        }
        
        // ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ฐฑ์‹ 
        if (count > maxCount || (count == maxCount && arr[i] < minNumber)) {
            maxCount = count;
            minNumber = arr[i];
        }
     }
     
     // ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
     return new int[]{minNumber, maxCount};
  }
}

 

2. ํ’€์ด :

1. ์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ :

๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž 1์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์—์„œ ๋ช‡ ๋ฒˆ ๋‚˜์™”๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 

 

2. ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ :

๊ธฐ์ค€ ์ˆซ์ž์™€ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์„ธ์–ด์ค€๋‹ค. 

 

3. ์ตœ๋Œ“๊ฐ’ ๋น„๊ต ๋ฐ ๊ฐฑ์‹  :

๋งŒ์•ฝ ํ˜„์žฌ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ maxCount๋ณด๋‹ค ํฌ๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์„ ๊ธฐ๋กํ•œ๋‹ค. 

๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€ ๊ฒฝ์šฐ๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค. 

์ด ์กฐ๊ฑด๋ฌธ์€ ํ˜„์žฌ ์ˆซ์ž๊ฐ€ "์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ๋น„๊ตํ•˜์—ฌ ๋” ํฌ๊ฑฐ๋‚˜, ๋˜๋Š” ๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด์„œ ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€ ๊ฒฝ์šฐ"๋ฅผ ํ™•์ธํ•œ๋‹ค.

 3.1 count > maxCount :

ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ์ˆซ์ž๋“ค๋ณด๋‹ค ๋” ๋งŽ์ด ๋‚˜์™”๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด์ด๋‹ค.

 3.2 count == maxCount && arr[i] < minNumber :

ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ตœ๊ณ  ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ๊ฐ™์€๋ฐ, ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 2์™€ 3์ด ๋‘˜๋‹ค 4๋ฒˆ ๋‚˜์™”๋Š”๋ฐ, ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€ 2๋ฅผ ์šฐ์„  ์„ ํƒํ•œ๋‹ค.

 

<๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๋ถ„์„>
๋‚˜์˜ ์ดˆ๊ธฐ ๋…ผ๋ฆฌ์  ์ ‘๊ทผ ๋ฐฉ์‹์€,
1. ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋จธ์ง€ ์š”์†Œ์™€ ๋น„๊ต
2. ๊ฐ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์„ธ๊ณ , ๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ์ตœ๋Œ€์ธ ์ˆซ์ž๋ฅผ ์ฐพ์Œ.
3. ๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•จ.

์ž˜ํ•œ์  :
1. ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์ œ ์ •์˜:
for๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ ค๋Š” ์•„์ด๋””์–ด.
์ตœ๋Œ“๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด์„œ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๋Š” ์ ‘๊ทผ์€ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ์˜€๋‹ค.

2. ์กฐ๊ฑด ๋น„๊ต์˜ ๊ฐœ๋…
i๋ฒˆ์งธ ์š”์†Œ์™€ ๋‚˜๋จธ์ง€ ์š”์†Œ๋ฅผ ๋น„๊ตํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ง๊ด€์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.
"์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜"๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉฐ ๋‹ต์„ ์ฐพ์œผ๋ ค๋Š” ๋ฐฉํ–ฅ์€ ๋ฌธ์ œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ’€๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ์ด๋‹ค.


๋ถ€์กฑํ–ˆ๋˜ ์  :
1. ํšจ์œจ์„ฑ ๋ถ€์กฑ :
i๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์€ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์ด ํ•„์š”ํ•œ๋ฐ ๊ทธ๊ฒƒ์„ ๋ชปํ•˜์˜€๋‹ค.
๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ , ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋–จ์–ด์งˆ์ˆ˜ ์žˆ๋‹ค.
๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•  ๋•Œ HashMap๊ณผ ๊ฐ™์€ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•ฌ๋‹ค.

2. ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ์กฐ๊ฑด ์„ค๋ช…. 
“i๋ฒˆ์งธ ์š”์†Œ์™€ ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค๊ณผ ๊ฐ™์€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค”๋ผ๋Š” ์ ‘๊ทผ์€ ์ดํ•ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ ์กฐ๊ฑด์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ •์˜ํ•˜์ง€ ์•Š์•˜๋‹ค.
์˜ˆ : ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ์กฐ๊ฑด(if)์„ ๋ถ„๋ช…ํžˆ ํ•ด์•ผ ํ•œ๋‹ค.

3. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜์˜ ๊ตฌ์ฒด์„ฑ ๋ถ€์กฑ.
๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ, ์ˆซ์ž๊ฐ€ ๋” ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•œ๋‹ค๋Š” ๋ฌธ์ œ ์กฐ๊ฑด์ด ๋ช…ํ™•ํžˆ ํฌํ•จ๋˜์ง€ ์•Š์•˜๋‹ค.
• ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ๋กœ์ง์ด ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ํ•„์š”ํ•˜๋‹ค.

 

๋ณด์™„ ๋ฐฉ์•ˆ

1. ํšจ์œจ์ ์ธ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ณ„์‚ฐ :

๋ฐฐ์—ด ์ „์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•(์˜ˆ : HashMap ์‚ฌ์šฉ)์„ ๋ฐฐ์šฐ๊ณ  ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ์กฐ๊ฑด์˜ ๋ช…ํ™•ํ™” :

๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์™€, ๋™์ผํ•œ ๊ฒฝ์šฐ ๋” ์ž‘์€ ์ˆซ์ž๋ฅผ ์„ ํƒํ•˜๋Š” ์กฐ๊ฑด์„ ๋ช…ํ™•ํžˆ ๊ตฌํ˜„ํ•œ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์กฐ๊ฑด๋ฌธ์„ ๋‚˜๋ˆ„์–ด ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

3. ๋‹จ๊ณ„๋ณ„ ํ’€์ด๋กœ ๋…ผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌ :

1๋‹จ๊ณ„ : ๊ฐ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

2๋‹จ๊ณ„ : ๊ฐ€์žฅ ๋งŽ์ด ๋“ฑ์žฅํ•œ ์ˆซ์ž์™€ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

์ด ๊ณผ์ •์„ ๋ช…ํ™•ํžˆ ๋‚˜๋ˆ„์–ด ๋‹จ๊ณ„๋ณ„๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋…ผ๋ฆฌ๊ฐ€ ๋” ์‰ฝ๊ฒŒ ์ •๋ฆฌ๋œ๋‹ค.


3. ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ธ ์ฝ”๋“œ

 

์ฃผ์š” ์•„์ด๋””์–ด :

1. HashMap ์‚ฌ์šฉ :

์ˆซ์ž๋ณ„ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

HashMap์˜ ํ‚ค๋Š” ์ˆซ์ž, ๊ฐ’์€ ํ•ด๋‹น ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜์ด๋‹ค.

 

2. ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋กœ ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ :

HashMap์— ์ €์žฅ๋œ ๊ฐ’๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์ฐพ๋Š”๋‹ค.

๋“ฑ์žฅ ํšŸ์ˆ˜๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ ๋” ์ž‘์€ ์ˆซ์ž๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

import java.util.*;

public class Assignment01 {
    public static void main(String[] args) {
        int[] tc1 = new int[]{1, 2, 3, 2, 2, 4, 5, 2, 6, 4};
        int[] tc2 = new int[]{1, 2, 3, 4, 5};
        int[] tc3 = new int[]{1, 2, 2, 3, 3};

        System.out.println(Arrays.toString(solution(tc1))); // [2, 4]
        System.out.println(Arrays.toString(solution(tc2))); // [1, 1]
        System.out.println(Arrays.toString(solution(tc3))); // [2, 2]
    }

    public static int[] solution(int[] arr) {
       //์ˆซ์ž๋ณ„ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•  HashMap
       Map<Integer, Integer> frequencyMap = new HashMap<>();
       
       // ๋ฐฐ์—ด ์ˆœํšŒํ•˜๋ฉฐ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ณ„์‚ฐ
       for (int num : arr) {
           frequencyMap.put(num, frequencyMap.getOrDefault(num,0)+1);
       }
       
       // ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ํ•ด๋‹น ์ˆซ์ž ์ดˆ๊ธฐํ™”
       int maxCount = 0;
       int minNumber = Integer.MAX_VALUE;
       
       // HashMap ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ์ˆซ์ž ์ฐพ๊ธฐ
       for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
            int number = entry.getKey();
            int count = entry.getValue();
            
            // ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ฐฑ์‹  ๋˜๋Š” ๋™์ผ ํšŸ์ˆ˜์ผ ๋•Œ ๋” ์ž‘์€ ์ˆซ์ž ์„ ํƒ
            if (count > maxCount || (count == maxCount && number < minNumber)) {
                 maxCount = count;
                 minNumber = number;
            }
       }
       
       // ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
       return new int[]{minNumber,maxCount};
    }

 

ํ’€์ด :

1. HashMap์— ๋“ฑ์žฅ ํšŸ์ˆ˜ ์ €์žฅ :

frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) +1)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

frequencyMap.getOrDefaut(num, 0)๋Š” num์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์ด๋ฏธ frequencyMap์— ์žˆ์œผ๋ฉด, ๊ทธ ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

์—†๋‹ค๋ฉด, ๊ธฐ๋ณธ๊ฐ’ 0์„ ๊ฐ€์ ธ์˜จ๋‹ค.  ๊ทธ ํšŸ์ˆ˜์— 1์„ ๋”ํ•ด์„œ ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. 

 

์œ„ ๋ฌธ๋ฒ•์„ ์—ฌ๋Ÿฌ์ค„๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋‹จ๊ณ„๋ณ„๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ด๋ ‡๋‹ค. 

if (frequencyMap.containsKey(num)) { //์ˆซ์ž๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์ธ
    int count = frequencyMap.get(num); // ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ด
    frequencyMap.put(num, count +1); // ํšŸ์ˆ˜๋ฅผ 1์„ ๋”ํ•ด์„œ ์ €์žฅ
} else {
   frequencyMap.put(num, 1); // ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์ˆซ์ž๋Š” 1๋กœ ์ €์žฅ
}

 

<๋‹จ๊ณ„๋ณ„ ์„ค๋ช…>

1. frequencyMap.containsKey(num) :

num์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์ด๋ฏธ ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

์˜ˆ : frequencyMap์— 2๊ฐ€ ์ด๋ฏธ ๋“ค์–ด ์žˆ๋‹ค๋ฉด true, ์—†์œผ๋ฉด falsue๋ฅผ ๋ฐ˜ํ™˜

 

2. ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€์„œ 1์ฆ๊ฐ€ :

frequencyMap.get(num)์€ num์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

๊ฐ€์ ธ์˜จ ๊ฐ’์— 1์„ ๋”ํ•ด์„œ ๋‹ค์‹œ ์ €์žฅํ•œ๋‹ค.

 

3. ์ˆซ์ž๊ฐ€ ์—†์œผ๋ฉด 1๋กœ ์ดˆ๊ธฐํ™”

frequencyMap.put(num, 1)์€ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์ˆซ์ž๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ํšŸ์ˆ˜๋ฅผ 1๋กœ ์ €์žฅ


4. ๋‹จ์ˆœํ™”๋œ ๋ฒ„์ „์˜ ์ฝ”๋“œ 

import java.util.*;

public class Assignment01 {
    public static void main(String[] args) {
        int[] tc1 = new int[]{1, 2, 3, 2, 2, 4, 5, 2, 6, 4};
        int[] tc2 = new int[]{1, 2, 3, 4, 5};
        int[] tc3 = new int[]{1, 2, 2, 3, 3};

        System.out.println(Arrays.toString(solution(tc1))); // [2, 4]
        System.out.println(Arrays.toString(solution(tc2))); // [1, 1]
        System.out.println(Arrays.toString(solution(tc3))); // [2, 2]
    }
    
    public static int[] solution(int[] arr) {
       // ์ˆซ์ž๋ณ„ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•  HashMap
       Map<Integer,Integer> frequencyMap = new HashMap<>();
       
       // ๋ฐฐ์—ด ์ˆœํšŒํ•˜๋ฉฐ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ณ„์‚ฐ
       for (int num : arr) {
           if (frequencyMap.containsKey(num)) { // ์ˆซ์ž๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์ธ
               int count = frequencyMap.get(num); //๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ด
               frequencyMap.put(num, count+1); // ํšŸ์ˆ˜์— 1์„ ๋”ํ•ด์„œ ์ €์žฅ
       } else {
           frequencyMap.put(num, 1); // ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์ˆซ์ž๋Š” 1๋กœ ์ €์žฅ
       }
    }
    
    //์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ํ•ด๋‹น ์ˆซ์ž ์ดˆ๊ธฐํ™”
    int maxCount = 0;
    int minNumber = Integer.MAX_VALUE;
    
    // HashMap ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜์™€ ์ˆซ์ž ์ฐพ๊ธฐ
    for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
         int number = entry.getKey();
         int count = entry.getValue();
         
         // ์ตœ๋Œ€ ๋“ฑ์žฅ ํšŸ์ˆ˜ ๊ฐฑ์‹  ๋˜๋Š” ๋™์ผ ํšŸ์ˆ˜์ผ ๋•Œ ๋” ์ž‘์€ ์ˆซ์ž ์„ ํƒ
         if (count > maxCount || (count == maxCount && number < minNumber)) {
             maxCount = count;
             minNumber = number;
         }
      }
    
    //๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    return new int[]{minNumber, maxCount};
    
    }

 


5. ์›๋ž˜ ๋ฌธ๋ฒ• vs ๋‹จ๊ณ„๋ณ„ ์ฝ”๋“œ

 

์›๋ž˜ ๋ฌธ๋ฒ• :

frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) +1);

 

 

๋‹จ๊ณ„๋ณ„ ์ฝ”๋“œ :

if (frequencyMap.containsKey(num)) {
    int count = frequencyMap.get(num);
    frequencyMap.put(num, count +1);
} else {
     frequencyMap.put(num, 1);
}

+ Recent posts