ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  Kit ์ฒด์œก๋ณต
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers 2020. 6. 27. 14:02

    ๋ฌธ์ œ ์„ค๋ช…

    ์ ์‹ฌ์‹œ๊ฐ„์— ๋„๋‘‘์ด ๋“ค์–ด, ์ผ๋ถ€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ์ด ์ด๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๋Š” ์ฒด๊ฒฉ ์ˆœ์œผ๋กœ ๋งค๊ฒจ์ ธ ์žˆ์–ด, ๋ฐ”๋กœ ์•ž๋ฒˆํ˜ธ์˜ ํ•™์ƒ์ด๋‚˜ ๋ฐ”๋กœ ๋’ท๋ฒˆํ˜ธ์˜ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 4๋ฒˆ ํ•™์ƒ์€ 3๋ฒˆ ํ•™์ƒ์ด๋‚˜ 5๋ฒˆ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒด์œก๋ณต์ด ์—†์œผ๋ฉด ์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒด์œก๋ณต์„ ์ ์ ˆํžˆ ๋นŒ๋ ค ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ•™์ƒ์ด ์ฒด์œก์ˆ˜์—…์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜ n, ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด lost, ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด reserve๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ฒด์œก์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ํ•™์ƒ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

     

    ์ œํ•œ์‚ฌํ•ญ

    • ์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜๋Š” 2๋ช… ์ด์ƒ 30๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.

    • ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ n๋ช… ์ดํ•˜์ด๊ณ  ์ค‘๋ณต๋˜๋Š” ๋ฒˆํ˜ธ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ n๋ช… ์ดํ•˜์ด๊ณ  ์ค‘๋ณต๋˜๋Š” ๋ฒˆํ˜ธ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ๋งŒ ๋‹ค๋ฅธ ํ•™์ƒ์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ด ํ•™์ƒ์€ ์ฒด์œก๋ณต์„ ํ•˜๋‚˜๋งŒ ๋„๋‚œ๋‹นํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, ๋‚จ์€ ์ฒด์œก๋ณต์ด ํ•˜๋‚˜์ด๊ธฐ์— ๋‹ค๋ฅธ ํ•™์ƒ์—๊ฒŒ๋Š” ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜

    import java.util.Arrays;
    
    class Solution {
        public int solution(int n, int[] lost, int[] reserve) {
            int answer = 0;
            int[] students = new int[n];
            
            // 1. initialize
            for(int i = 0; i < students.length; i++) { students[i] = 1; }
            // 2. check student who lost the cloth
            for(int i = 0; i < lost.length; i++) { students[lost[i] - 1]--; }
            // 3. check student who has extra cloth
            for(int i = 0; i < reserve.length; i++) { students[reserve[i] - 1]++; }
            
            // 4. give extra cloth to student who lost the cloth
            for(int i = 0; i < students.length; i++) {
                int lStd = i - 1;
                int rStd = i + 1;
                
                if(students[i] > 1 && lStd > -1 && students[lStd] == 0) {
                    students[i]--;
                    students[lStd]++;
                }
                
                if(students[i] > 1 && rStd < students.length && students[rStd] == 0) {
                    students[i]--;
                    students[rStd]++;
                }
            }
            
            // 5. count the number of student who has cloth
            for(int i = 0; i < students.length; i++) {
                if(students[i] > 0) answer++;
            }
                
            return answer;
        }
    }

     

    ๋‚˜๋Š” ์™œ ์ €๋ ‡๊ฒŒ ํ’€์—ˆ๋‚˜

    ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋– ์˜ฌ๋ž๋‹ค.

     

    1. ํ•™์ƒ๋“ค ๊ฐ๊ฐ์˜ ์ฒด์œก๋ณต ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๊ฐ€ n์ธ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

    2. ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์€ decrementํ•œ๋‹ค.

    3. ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ๋“ค์€ incrementํ•œ๋‹ค.

    4. ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ๋“ค์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์—๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค€๋‹ค.

      1. ์™ผ์ชฝ ์นœ๊ตฌ๊ฐ€ ์žˆ๊ณ  ๊ทธ ์นœ๊ตฌ๊ฐ€ ๊ฐ€์ง„ ์ฒด์œก๋ณต์˜ ๊ฐœ์ˆ˜๊ฐ€ 0๊ฐœ์ด๋ฉด ์ž์‹ ์˜ ์˜ท์„ ํ•˜๋‚˜ ๋นŒ๋ ค์ค€๋‹ค.

      2. ์˜ค๋ฅธ์ชฝ ์นœ๊ตฌ๊ฐ€ ์žˆ๊ณ  ๊ทธ ์นœ๊ตฌ๊ฐ€ ๊ฐ€์ง„ ์ฒด์œก๋ณต์˜ ๊ฐœ์ˆ˜๊ฐ€ 0๊ฐœ์ด๋ฉด ์ž์‹ ์˜ ์˜ท์„ ํ•˜๋‚˜ ๋นŒ๋ ค์ค€๋‹ค.

    5. ์ฒด์œก๋ณต์˜ ๊ฐœ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ํฐ ํ•™์ƒ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

    ์ƒ๊ฐํ•œ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ฒ˜์Œ์— ์™ผ์ชฝ ์นœ๊ตฌ, ์˜ค๋ฅธ์ชฝ ์นœ๊ตฌ ๋ฒ”์œ„๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋ช‡ ๋ฒˆ ๋‚ฌ๋Š”๋ฐ ๊ทธ๊ฒƒ๋งŒ ์žก์•„์ฃผ๋‹ˆ๊นŒ ์„ฑ๊ณตํ–ˆ๋‹ค.

     

    ๋‚˜๋Š” ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜

    ์šฐ๋ฆฌ ํ•™๊ต์— ํ•œ ๊ต์ˆ˜๋‹˜๊ป˜์„œ ๋Š˜ ํ•˜์‹œ๋˜ ๋ง์”€์ด ์žˆ๋‹ค.

     

    "์ƒ๊ฐ ํ›„ ์ฝ”๋”ฉํ•ด๋ผ!"

     

    ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์™œ "์ƒ๊ฐ ํ›„ ์ฝ”๋”ฉ"์„ ๊ฐ•์กฐํ•˜์…จ๋Š”์ง€ ๊นจ๋‹ฌ์•˜๋‹ค.

    ์ฐจ๊ทผ์ฐจ๊ทผ ์ƒ๊ฐํ•˜๊ณ  ์ด๋ฅผ ์ •๋ฆฌํ•œ ๋’ค์— ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ๊พธ์ค€ํžˆ ์—ฐ์Šตํ•ด์•ผ๊ฒ ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.