Post

๐Ÿ’ช๐Ÿป programmers Lv1(24.10.21 - 5๋ฌธ์ œ)

๐Ÿ’ช๐Ÿป programmers Lv1(24.10.21 - 5๋ฌธ์ œ)

programmers Lv1(24.10.21 - 5๋ฌธ์ œ)

55) ์นด๋“œ ๋ญ‰์น˜

  • card1๊ณผ card2์— ์ ํžŒ ๋‹จ์–ด๋“ค๋กœ goal ๋งŒ๋“ค๊ธฐ. ๊ฐ€๋Šฅํ•˜๋ฉด โ€œYesโ€ ์ถœ๋ ฅ, ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด โ€œNoโ€ ์ถœ๋ ฅํ•˜๊ธฐ

    • ๐Ÿ“Œ ํ’€์ด

      • 1) ํ–ฅ์ƒ๋œ for๋ฌธ์„ ์ด์šฉํ•ด goal์„ word๋กœ

      • 2) idx1์ด cards1์˜ ๊ธธ์ด๋ณด๋‹ค ํฌ๊ณ  word์˜ ๋ฌธ์ž์—ด๊ณผ cards1์˜ idx1 ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž์—ด์ด ๊ฐ™์„ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์ฆ๊ฐ€

      • 3) idx2๊ฐ€ cards2์˜ ๊ธธ์ด๋ณด๋‹ค ํฌ๊ณ  words์˜ ๋ฌธ์ž์—ด๊ณผ cards2์˜ idx2 ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž์—ด์ด ๊ฐ™์„ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์ฆ๊ฐ€

      • 4) ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ โ€œNoโ€ ์ถœ๋ ฅ, ๋งž์„ ๊ฒฝ์šฐ โ€œYesโ€ ์ถœ๋ ฅ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        int idx1 = 0;
        int idx2 = 0;
        
        for(String word : goal)
        {
            if(cards1.length > idx1 && word.equals(cards1[idx1]))
            {
                idx1++;
            }
            else if(cards2.length > idx2 && word.equals(cards2[idx2]))
            {
                idx2++;
            }
            else{
                return "No";
            }
        }
        return "Yes";
    }
}



56) ํฌ์ผ“๋ชฌ

  • ๊ฐ€์žฅ ๋งŽ์€ ์ข…๋ฅ˜์˜ ํฌ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ๊ทธ๋•Œ ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

  • ๐Ÿ“Œ ๋‚ด ํ’€์ด

    • 1) [3, 1, 2, 3] ์ด ๋“ค์–ด์žˆ์œผ๋ฉด 3 , 3์€ ํ•œ ์ข…๋ฅ˜๋กœ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ HashSet์„ ์‚ฌ์šฉ

    • 2) nums์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ set์— ์š”์†Œ ์ €์žฅ

    • 3) nums์˜ ๊ธธ์ด๋ฅผ 2๋กœ ๋‚˜๋ˆ„์–ด์„œ num์ด๋ผ๋Š” ๋ณ€์ˆ˜ ์ƒ์„ฑ ํ›„, num์˜ ๊ธธ๊ธฐ์•„ set์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด num์„ ์ถœ๋ ฅ, ์•„๋‹ˆ๋ผ๋ฉด set์˜ ํฌ๊ธฐ ์ถœ๋ ฅ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int num = nums.length/2; //2
        HashSet<Integer> set = new HashSet<>();
        
        for(int i=0;i<nums.length;i++)
        {
            set.add(nums[i]);
        }
        if(num < set.size())
        {
            answer = num;
        }
        else{
            answer = set.size();
        }
        return answer;
    }
}



57) 2016๋…„

  • 2016๋…„ 1์›” 1์ผ์€ ๊ธˆ์š”์ผ์ด๋‹ค. 2016๋…„ a์›” b์ผ์€ ๋ฌด์Šจ ์š”์ผ์ธ์ง€ ๊ตฌํ•˜๊ธฐ

  • ๋‹ต์•ˆ ์ฐธ๊ณ 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
class Solution {
    public String solution(int a, int b) {
        String answer = "";
        String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int[] date = {31,29,31,30,31,30,31,31,30,31,30,31};
        int allDate = 0;
        for(int i=0;i<a-1;i++)
        {
            allDate += date[i];
        }
        allDate += (b-1); // 1์›” 1์ผ์„ ๊ธฐ์ค€์œผ๋กœ 0์ผ์ด ๊ธˆ์š”์ผ๋กœ ์‹œ์ž‘
        answer = day[allDate % 7];
        return answer;
    }
}   
// a = 5, b = 24
// allDate = 31 + 29 + 31 + 30 = 121
// allDate = 121 + 23 = 144
// 144 % 7 = 4, day[4] = TUE



58) ๊ธฐ์‚ฌ๋‹จ์›์˜ ๋ฌด๊ธฐ

  • ๊ธฐ์‚ฌ๋‹จ์›์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ number์™€ ์ด์›ƒ๋‚˜๋ผ์™€ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ limit์™€ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ power๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌด๊ธฐ์ ์˜ ์ฃผ์ธ์ด ๋ฌด๊ธฐ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒ ์˜ ๋ฌด๊ฒŒ๋ฅผ ๊ตฌํ•˜๋ผ.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        int[] cnt = new int[number+1];
        for(int i=1;i<=number;i++)
        {
           for(int j=1;j<=i;j++)
           {
               if(i%j==0)
               {
                   cnt[i]++;
               }
           }
            if(cnt[i]<=limit)
           {
               answer+=cnt[i];
           }
           else if(cnt[i]>limit)
           {
               answer+=power;
            }
        }
        return answer;
    }
}
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 27๊ฐœ์ค‘ 2๊ฐœ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋œธ.

  • ์ˆซ์ž i์— ๋Œ€ํ•ด 1๋ถ€ํ„ฐ i๊นŒ์ง€ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ˆœํšŒํ•˜์—ฌ ์•ฝ์ˆ˜๋ฅผ ์ฐพ๋Š” ์ด ๋ฐฉ์‹์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ํผ.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„. ์ด์ค‘๋ฐ˜๋ณต๋ฌธ์œผ๋กœ : O(n^2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        int[] cnt = new int[number+1];
        for(int i=1;i<=number;i++)
        {
           for(int j=1;j*j<=i;j++)
           {
               if(i%j==0)
               {
                   cnt[i]++;
                   if(j!=i/j)
                   {
                       cnt[i]++;
                   }
               }
           }
            if(cnt[i]<=limit)
           {
               answer+=cnt[i];
           }
           else if(cnt[i]>limit)
           {
               answer+=power;
            }
        }
        return answer;
    }
}
  • for (int j = 1; j * j <= i; j++)๋กœ 1๋ถ€ํ„ฐ โˆši๊นŒ์ง€๋งŒ ํ™•์ธํ•˜๊ณ , ๋Œ€์นญ๋˜๋Š” ์•ฝ์ˆ˜ (i / j)๋„ ํ•จ๊ป˜ ์นด์šดํŠธํ•˜์—ฌ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ–ˆ๋‹ค.

  • j!=i/j ๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ์ค‘๋ณต๋œ ์•ฝ์ˆ˜๋Š” ๋ฐฉ์ง€ํ•˜๊ณ  ๊ทธ ์™ธ์˜ ๋Œ€์นญ๋˜๋Š” ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n^2) -> O(n*sqrt(n))์œผ๋กœ ์ค„์—ˆ๋‹ค.



59) ๋ชจ์˜๊ณ ์‚ฌ

  • ๐Ÿ“Œ ๋‚ด ํ’€์ด

    • 1) num1, num2, num3 ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ ์ˆ˜ํฌ์ž์˜ ์ˆซ์ž ๋ฐฐ์—ด ์ €์žฅ
    • 2) ์ •๋‹ต ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ, 1, 2, 3๋ฒˆ ์ˆ˜ํฌ์ž์˜ ์ˆซ์ž์™€ ๋น„๊ตํ•ด์„œ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ฐ ์นด์šดํŠธ ์ฆ๊ฐ€

    • 3) ์ œ์ผ ํฐ ๊ฐ’ maxScore์— ์ €์žฅ
    • 4) ์ˆ˜ํฌ์ž 1, 2, 3๋ฒˆ์˜ ๊ฐ’์ด maxScore์ผ ๊ฒฝ์šฐ list์— ์š”์†Œ ์ถ”๊ฐ€

    • 5) ๋ฆฌ์ŠคํŠธ ์š”์†Œ ์ถœ๋ ฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer;
        int[] num1 = {1,2,3,4,5};
        int[] num2 = {2,1,2,3,2,4,2,5};
        int[] num3 = {3,3,1,1,2,2,4,4,5,5};
        int cnt1 = 0, cnt2 = 0, cnt3 = 0;
        
        for(int i=0;i<answers.length;i++){
            if(answers[i] == num1[i%num1.length])
            {
                cnt1++;
            }
            if(answers[i] == num2[i%num2.length])
            {
                cnt2++;
            }
            if(answers[i] == num3[i%num3.length])
            {
                cnt3++;
            }
        }
       
        int maxScore = Math.max(cnt1, Math.max(cnt2,cnt3));
        ArrayList<Integer> list = new ArrayList<>();
        if(cnt1 == maxScore)
        {
            list.add(1);
        }
        if(cnt2 == maxScore)
        {
            list.add(2);
        }
        if(cnt3 == maxScore)
        {
            list.add(3);
        }
      
        answer = new int[list.size()];
        
        for(int i=0;i<list.size();i++)
        {
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.