ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค > ์คํ/ํ > ํ๋ฆฐํฐ
๋๋์ด๋ฐ๐พ 2019. 1. 7. 17:41ํ๋ฆฐํฐ
๋ฌธ์ ์ค๋ช
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
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๋ก ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
priorities | location | return |
---|---|---|
[2, 1, 3, 2] | 2 | 1 |
[1, 1, 9, 1, 1, 1] | 0 | 5 |
ํ๋ฆฐํฐ์ ๋์๋ฐฉ์์ ๋ณด๋ ํ์ฌ ์ฒ๋ฆฌ ํ๋ ค๋ ์์ ์ด ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ง ์๋ค๋ฉด ์ง๊ธ ์ฒ๋ฆฌ ํ๋ ค๋ ์ผ์ ๋งจ ๋ค๋ก ๋ค์ ๋๋ ค๋ฒ๋ฆฝ๋๋ค. ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ ์ผ์ด ๋์ฌ ๋๊น์ง ์ด ์์ ์ ๊ณ์ ๋ฐ๋ณตํ๊ฒ ๋์ฃ . ํ ์๋ฃ๊ตฌ์กฐ์ ํน์ง์ ๋๋ค.
ํ ์๋ฃ๊ตฌ์กฐ์ ํน์ง์ ์ด์ฉํ์ฌ ์ฝ๋๋ก ํ ๋ฒ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
function solution(priorities, location) { let answer = 0; let tasks = priorities.map((v,i)=>({ lo : i === location, val: v })); /* ๊ธฐ์กด์ ๋ฐฐ์ดํํ์์ ํ์ฌ ์์นํ๊ณ ์๋ ์ธ๋ฑ์ค์ ๋ณด๋ฅผ ๊ฐ์ด ๊ฐ๊ณ ์๋ ๊ฐ์ฒด๋ก ์ ์ฅ location์ ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์์น ์ฌ๊ธฐ ์์ ์์๋ ๋ฐฐ์ด์ 3๋ฒ์งธ ๊ฐ. [ { lo: false, val: 2 }, { lo: false, val: 1 }, { lo: true, val: 3 }, { lo: false, val: 2 } ] */ while(true){ let cur = tasks.splice(0,1)[0]; //ํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์ผ์ ๋นผ๋ธ๋ค. splice ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ๊ฐ์ ๋ฐ๊ฟ. if(tasks.some(t=>t.val > cur.val)){ //ํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์ผ๋ณด๋ค ๋ ๋์ ์ฐ์ ์์์ ์ผ์ด ์๋์ง ๋น๊ต tasks.push(cur); //๋ ๋์ ์ฐ์ ์์๊ฐ ์กด์ฌํ ๋, ํ์ฌ ํ๊ณ ์ ํ๋ ์ผ์ ๋งจ ๋ค๋ก ๋ฐ์ด๋ . } else { //ํ์ฌ ํ๊ณ ์ ํ๋ ์ผ์ด ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ผ ๋ answer++; //answer ๊ฐ์ +1์ ํ๋ค.(์ธ์์์๋ฅผ ์นด์ดํธ) if(cur.lo) return answer; //๊ทธ ์ผ์ด ๋ฌธ์ ์์ ํ์ฌ ์์น๋ก ์ฃผ์ด์ง ๋ถ๋ถ์ผ ๋ answer ๊ฐ์ ๋ฆฌํด. } } } let priorities = [2, 1, 3, 2]; let location = 2; console.log( solution(priorities,location) ) ; //1
๊ฐ์ฅ ์ฒ์์๋ ์๋ ์ฃผ์ด์ง ๋ฐฐ์ด priorities ๋ฅผ ํ์ฌ ์์น์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ํํํฉ๋๋ค. location ๊ฐ์ 2๋ฅผ ์ฃผ์์ผ๋ ์ฌ๊ธฐ์๋ ์ธ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฐฐ์ด์ true๊ฐ ๋ค์ด๊ฐ๊ณ ๋๋จธ์ง false๊ฐ ๋ค์ด๊ฐ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณค ๋ฐ๋ณต๋ฌธ์ ๋ง๋๊ฒ๋๋๋ฐ, ์ฌ๊ธฐ์ ์ค์ํ๊ฑด splice ๋ด์ฅํจ์๋ฅผ ์จ์ ๋น๊ต๋ฅผ ํด์ผํฉ๋๋ค. ๊ฐ์ฅ ๋์ ์ฐ์ ์์๊ฐ ์๋๋ผ๋ฉด push ํจ์๋ฅผ ํตํด ์๋ณธ ๋ฐฐ์ด์ ๋ค์ ์ ์ฅ์ ํ ๊ฑด๋ฐ, splice๋ฅผ ์ฐ์ง ์์ผ๋ฉด push๋ฅผ ํ๊ฒ ๋ ๋ ์๋ณธ ๋ฐฐ์ด์ด ๊ณ์ ๋์ด๋๊ฒ ๋๊ฒ ์ฃ . splice์ ๋ํ ์ค๋ช ์ MDN์ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
while๋ฌธ์ ์ข ๋ฃ์กฐ๊ฑด์ ํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์ผ์ด ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ด๋ฉด์, ๋ฌธ์ ์์ ์ฃผ์ด์ง location๊ณผ ์ผ์นํ ๋ ์ ๋๋ค. ์ด ๋ฌธ์ ์ ์์์์๋ ์ฃผ์ด์ง location ์ ๋ณด๊ฐ 2๋๊น priorities[2]์ ๊ฐ ์ฆ, 3์ ์๋ฏธํ๋ฉฐ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ํ ๋ฒ๋ง ๋๊ณ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๊ฒ ๋ฉ๋๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- android
- nestjs module
- node.js
- Promise error
- nestjs config
- @nestjs/config
- typeorm ์ฐ๊ฒฐ
- docker mysql
- sequelize
- Spring
- typeorm
- node.js backend
- nestjs typeorm
- Spring Async
- nestjs project
- Promise bulk
- DeferredResult
- foreignkey
- ๋น๋๊ธฐ ์์ฒญ
- ์๊ณ ๋ฆฌ์ฆ
- nestjs directory
- nestjs configService
- nestjs doc
- ํ๋ก๊ทธ๋๋จธ์ค
- backend-framework
- JavaScript
- NestJS
- Request_Limit_Exceeded
- nestjs/cli
- ๊ธฐ์์ฒญAPI
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |