-
[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๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํ๋ค.
-
๋ฌธ์์ ์ถ๋ ฅ์์๋ฅผ ๋ํ๋ด๋ sequence๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
-
๋ฌธ์๋ค์ ์ค์๋์ ์์น๋ฅผ ๋ด๋ ๋ฌธ์ํ๋ฅผ ๋ง๋ ๋ค.
-
๋ฌธ์ํ๊ฐ ๋น ๋๊น์ง ์๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
-
๋งจ ์ ๋ฌธ์๋ฅผ dequeํ๋ค.
-
์ถ๋ ฅ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ isPrintable์ true๋ก ํ๋ค.
-
๋ฌธ์ํ๋ฅผ ์ํํ๋ฉด์ ๋งจ ์ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ์๋์ง ํ์ธํ๋ค. ์์ผ๋ฉด ๋งจ ์ ๋ฌธ์๋ฅผ ๋ฌธ์ํ์ dequeํ๊ณ isPrintable์ false๋ก ํ ๋ค ์ํ๋ฅผ ๋ฉ์ถ๋ค.
-
-
isPrintable์ด true์ด๋ฉด sequence๋ฅผ incrementํ๋ค. ์ด๋ ๋ฌธ์์ ์์น๊ฐ ๋ด๊ฐ ์๊ณ ์ถ์ ๋ฌธ์์ ์์น์ ๊ฐ์ผ๋ฉด breakํ๋ค.
๋๋ ๋ฌด์์ ๋ฐฐ์ ๋
์ฃผ์ํด์ผ ํ ๋ณ์๊ฐ ํ๋๊ฐ ์๋ ๋ค์์ผ ๊ฒฝ์ฐ class๋ฅผ ๋ง๋ค์ด์ ํ๊บผ๋ฒ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-