ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  Kit ํ”„๋ฆฐํ„ฐ
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers 2020. 7. 1. 13:25

    ๋ฌธ์ œ ์„ค๋ช…

     

    ์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐํ„ฐ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กญ๊ฒŒ ๊ฐœ๋ฐœํ•œ ํ”„๋ฆฐํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ธ์‡„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

     

    1. ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ(J)๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊บผ๋ƒ…๋‹ˆ๋‹ค.
    2. ๋‚˜๋จธ์ง€ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ J๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•œ ๊ฐœ๋ผ๋„ ์กด์žฌํ•˜๋ฉด J๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
    3. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด J๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

     

    ์˜ˆ๋ฅผ ๋“ค์–ด, 4๊ฐœ์˜ ๋ฌธ์„œ(A, B, C, D)๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๊ณ  ์ค‘์š”๋„๊ฐ€ 2 1 3 2 ๋ผ๋ฉด C D A B ์ˆœ์œผ๋กœ ์ธ์‡„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ C๋Š” 1๋ฒˆ์งธ๋กœ, A๋Š” 3๋ฒˆ์งธ๋กœ ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.

    ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ค‘์š”๋„๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด priorities์™€ ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ์–ด๋–ค ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” location์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

     

    ์ œํ•œ์‚ฌํ•ญ

    • ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์—๋Š” 1๊ฐœ ์ด์ƒ 100๊ฐœ ์ดํ•˜์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ธ์‡„ ์ž‘์—…์˜ ์ค‘์š”๋„๋Š” 1~9๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ์ค‘์š”ํ•˜๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    • location์€ 0 ์ด์ƒ (ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๋Š” ์ž‘์—… ์ˆ˜ - 1) ์ดํ•˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ์œผ๋ฉด 0, ๋‘ ๋ฒˆ์งธ์— ์žˆ์œผ๋ฉด 1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

     

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

    import java.util.LinkedList;
    
    public class Document {
        int priority;
        int location;
        
        public Document(int priority, int location){
            this.priority = priority;
            this.location = location;
        }
    }
    
    class Solution {
        public int solution(int[] priorities, int location) {
            int sequence = 0;
             
            LinkedList<Document> documents = new LinkedList<>();
            for(int i = 0; i < priorities.length; i++) {
                documents.add(new Document(priorities[i], i));
            }
            
            while(!documents.isEmpty()) {
                Document doc = documents.remove();
                boolean isPrintable = true;
                
                for(int i = 0; i < documents.size(); i++) {
                    Document other = documents.get(i);
                    
                    if(doc.priority < other.priority) {
                        isPrintable = false;
                        documents.add(doc);
                        break;
                    }
                }
                
                if(isPrintable) { 
                    sequence++;
                    if(doc.location == location) break;
                }
            }
    
            return sequence;
        }
    }

     

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

    ๋ฌธ์ œ๋ฅผ ์ฝ์ž๋งˆ์ž ๋ฌธ์„œ์˜ ์ค‘์š”๋„๋ฅผ ํ์— ๋‹ด์•„์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ถœ๋ ฅ๋˜๋Š”๊ฐ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”๋„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธ์„œ์˜ ์œ„์น˜๋˜ํ•œ ์–ด๋”˜๊ฐ€์— ๋‹ด์•„์•ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌธ์„œ์˜ ์ค‘์š”๋„์™€ ์œ„์น˜๋ฅผ ๋™์‹œ์— ๋‹ด๊ธฐ ์œ„ํ•ด์„œ Document๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ–ˆ๋‹ค.

     

    1. ๋ฌธ์„œ์˜ ์ถœ๋ ฅ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” sequence๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

    2. ๋ฌธ์„œ๋“ค์˜ ์ค‘์š”๋„์™€ ์œ„์น˜๋ฅผ ๋‹ด๋Š” ๋ฌธ์„œํ๋ฅผ ๋งŒ๋“ ๋‹ค.

    3. ๋ฌธ์„œํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ์•„๋ž˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

      1. ๋งจ ์•ž ๋ฌธ์„œ๋ฅผ dequeํ•œ๋‹ค.

      2. ์ถœ๋ ฅ๊ฐ€๋Šฅ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” isPrintable์„ true๋กœ ํ•œ๋‹ค.

      3. ๋ฌธ์„œํ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋งจ ์•ž ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์žˆ์œผ๋ฉด ๋งจ ์•ž ๋ฌธ์„œ๋ฅผ ๋ฌธ์„œํ์— dequeํ•˜๊ณ  isPrintable์„ false๋กœ ํ•œ ๋’ค ์ˆœํšŒ๋ฅผ ๋ฉˆ์ถ˜๋‹ค.

    4. isPrintable์ด true์ด๋ฉด sequence๋ฅผ incrementํ•œ๋‹ค. ์ด๋•Œ ๋ฌธ์„œ์˜ ์œ„์น˜๊ฐ€ ๋‚ด๊ฐ€ ์•Œ๊ณ  ์‹ถ์€ ๋ฌธ์„œ์˜ ์œ„์น˜์™€ ๊ฐ™์œผ๋ฉด breakํ•œ๋‹ค.

     

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

    ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ ๋‹ค์ˆ˜์ผ ๊ฒฝ์šฐ class๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•œ๊บผ๋ฒˆ์— ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.