Jieunny์ ๋ธ๋ก๊ทธ
S4) Unit 1. [์ค์ต] Stack & Queue ๋ฌธ์ ๋ณธ๋ฌธ
๐ฃ ์ ํจํ ๊ดํธ์
Q. ์ ๋ ฅ๋ ๊ดํธ ๊ฐ๋ค์ด ๋ชจ๋ ์์ด ๋ง๊ฒ ์ฌ๋ฐ๋ฅธ์ง๋ฅผ ํ๋จํด ๋ชจ๋ ์์ด ๋ง์ผ๋ฉด true ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ์ถ๋ ฅํ์ธ์.
์ ๋ ฅ๋ ๊ดํธ ๊ฐ๋ค์ด ์ ํจํ ๊ฒฝ์ฐ๋ค์ ๋ค์์ ํด๋นํฉ๋๋ค.
1. ์ด๋ฆฐ ๊ดํธ๋ ๊ฐ์ ํ์ ์ ๋ซํ ๊ดํธ๋ก ๋ซํ์์ด์ผ ํ๋ค.
2. ์ด๋ฆฐ ๊ดํธ๋ ์ฌ๋ฐ๋ฅธ ์์๋๋ก ๋ซํ์ผ๋ง ํ๋ค. 3. ๋ชจ๋ ๋ซํ ๊ดํธ๋ ๊ทธ์ ์์ํ๋ ๊ฐ์ ํ์ ์ ์ด๋ฆฐ ๊ดํธ๋ฅผ ๊ฐ๊ณ ์๋ค.
์ ๋ ฅ๊ฐ์ ํตํด ๋ค์ด์ค๋ ๊ดํธ๋ ()[]{}๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
const isValid = (str) => {
const stk = [];
if(str.length === 0 || str.length === 1) return false;
// ๋น ๋ฌธ์์ด์ด๊ฑฐ๋ ๊ดํธ ํ๋๋ฉด false
for(let i=0; i<str.length; i++){
// ๋๋ฉด์
if(str[i] === '(' || str[i] === '{' || str[i] === '['){
// ์ฌ๋ ๊ดํธ ๋ง๋๋ฉด stk์ push
stk.push(str[i]);
}
else if(str[i] === ')' || str[i] === '}' || str[i] === ']'){
// ๋ซ๋ ๊ดํธ ๋ง๋๋ฉด
if(stk.length === 0) return false;
// ๋ซ๋ ๊ดํธ ์๋๋ฐ ์คํ์ ์ฌ๋ ๊ดํธ ์์ผ๋ฉด false
else {
// ์คํ์ ์ฌ๋ ๊ดํธ๊ฐ ์กด์ฌํ๋ค๋ฉด
let pop = stk.pop();
// ์คํ์ ์๋๊ฑฐ ๋นผ์
if((pop === '[' && str[i] !== ']') || (pop === '(' && str[i] !== ')') || (pop === '{' && str[i] !== '}')){
// ๋ค์ด์จ ๋ซํ ๊ดํธ๋ ๋ง๋ ๊ดํธ์ธ์ง ๋ณด๊ณ
return false;
// ์๋๋ฉด false
}
}
}
}
if(stk.length === 0) return true;
// ์กฐ๊ฑด๋ฌธ์ ๊ฑธ๋ฆฌ์ง ์๊ณ ์ ๋๋ก pop ๋ฌ๋ค๋ฉด ์คํ์ ๋จ์์๋ ๊ฒ ์์ด์ผ ํ๋ค.
else return false;
// ๋จ์์๋๊ฒ ์๋ค๋ฉด ์ฌ๋ ๊ดํธ๋ง ๊ณ์ ๋์จ ๊ฒฝ์ฐ์ด๋ฏ๋ก false
}
๐ฃ ๋ฐ์ค ํฌ์ฅ
Q. ๋งํธ์์ ์ฅ์ ๋ณด๊ณ ๋ฐ์ค๋ฅผ ํฌ์ฅํ๋ ค๊ณ ํฉ๋๋ค. ๋ฐ์ค๋ฅผ ํฌ์ฅํ๋ ๋ฐ๋ ํญ์ด ๋๋ฌด ์ข์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ํ ์ค๋ก ์ ์์ด์ผ ํ๊ณ , ๋ค์ด์จ ์์๋๋ก ํ ๋ช ์ฉ ๋๊ฐ์ผ ํฉ๋๋ค.
๋ถํ ์ค ๋คํ์, ์ธ์์ ๋ง๊ฒ ํฌ์ฅํ ์ ์๋ ๊ธฐ๊ตฌ๋ค์ด ๋์ฌ ์์ด, ๋ชจ๋๊ฐ ํฌ์ฅ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ง์ด ๋ง์ ์ฌ๋์ ์ง์ด ์ ์ ์ฌ๋๋ณด๋ค ํฌ์ฅํ๋ ์๊ฐ์ด ๊ธธ ์๋ฐ์ ์์ต๋๋ค.
๋ท์ฌ๋์ด ํฌ์ฅ์ ์ ๋ถ ๋๋์ด๋ ์์ฌ๋์ด ๋๋ด์ง ๋ชปํ๋ฉด ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ์์ฌ๋์ด ํฌ์ฅ์ ๋๋ด๋ฉด, ํฌ์ฅ์ ๋ง์น ๋ท์ฌ๋๋ค๊ณผ ํจ๊ป ํ ๋ฒ์ ๋๊ฐ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ, ์์ฌ๋์ ๋ฐ์ค๋ 5 ๊ฐ๊ณ , ๋ท์ฌ๋ 1์ ๋ฐ์ค๋ 4 ๊ฐ, ๋ท์ฌ๋ 2์ ๋ฐ์ค๋ 8 ๊ฐ๋ผ๊ณ ๊ฐ์ ํ์ ๋, ๋ท์ฌ๋ 1์ด ์ ์ผ ๋จผ์ ๋ฐ์ค ํฌ์ฅ์ ๋๋ด๊ฒ ๋์ด๋ ์์ฌ๋ 1์ ํฌ์ฅ์ด ๋ง์น ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๊ฐ์ด ๋๊ฐ๊ฒ ๋ฉ๋๋ค.
์ด๋, ํตํ์ด ์ต๋ ๋ช ๋ช ์ด ํ๊บผ๋ฒ์ ๋๊ฐ๋์ง ์ ์ ์๋๋ก ํจ์๋ฅผ ๊ตฌํํด ์ฃผ์ธ์.
function paveBox(boxes) {
// TODO: ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
let outPeople = [];
// ๋๊ฐ ์ฌ๋ ์ธ์ ์ ๋ด์ ๋ฐฐ์ด
let queue = [];
for(let i=0; i<boxes.length; i++){
// ๋ฐ์ค ๋ฐฐ์ด ๋๋ฉด์
if(queue.length === 0){
// ์ฒซ๋ฒ์งธ ์์์ด๋ฉด
queue.push(boxes[i]);
// ํ์ ํธ์
}
else {
// 2๋ฒ์งธ ์์๋ถํฐ
if(boxes[i] <= queue[0]){
// ๋ง์ฝ์ ์์ฌ๋ ๋ณด๋ค ๋ฐ์ค ๊ฐ์๊ฐ ์ ์ผ๋ฉด
queue.push(boxes[i]);
// ํ์ ๊ณ์ ํธ์(๊ฐ์ด ๋๊ฐ ์ ์์ผ๋ฏ๋ก)
}
else if(boxes[i] > queue[0]){
// ์์ฌ๋ ๋ณด๋ค ๋ฐ์ ๊ฐ์๊ฐ ๋ง์ผ๋ฉด
let people = 0;
// ์ผ๋จ ๊ทธ ์์ ์ฌ๋๋ค ๋จผ์ ๋ด๋ณด๋ผ ์ ์์ผ๋ฏ๋ก
let len = queue.length;
// ํ์ ๊ธธ์ด ๊ตฌํ๊ณ
for(let i=0; i<len; i++){
queue.shift();
// ํ ์์ ๋นผ๋ฉด์
people++;
// ๋๊ฐ๋ ์ฌ๋ ์๋ ++ ํด์ค๋ค.
}
outPeople.push(people);
// max ๊ฐ ๊ตฌํด์ผํ๋ฏ๋ก ๋๊ฐ ์ฌ๋ ๋ฐฐ์ด์ ์ผ๋จ ๋ด์์ค๋ค
queue.push(boxes[i]);
// ์์ฌ๋๋ณด๋ค ๋ฐ์ค ๊ฐ์ ๋ง๋ ๊ฑฐ ํ์ push
}
}
}
let people = 0;
// ํ์ ๋จ์ ์ฌ๋๋ค ๋ด์ ๋ณ์
for(let i=0; i<queue.length; i++){
// ํ์ ๋จ์ ์ฌ๋๋ค์ boxes ๋ฐฐ์ด์ด ๋ค ๋์์ ํ๋ฒ์ ๋๊ฐ ์ ์๋ ์ฌ๋๋ค
people++;
}
outPeople.push(people);
return Math.max(...outPeople);
// ๊ทธ ์ค์ ๊ฐ์ฅ ๋ง์ด ๋๊ฐ ์ธ์์ ๊ตฌํ๊ธฐ
}
'CodeStates > Training' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S4) Unit 2. [์ค์ต] ๋ฐ์ํ ์น ๊ตฌํํ๊ธฐ (0) | 2023.03.17 |
---|---|
S4) Unit 1. [์ค์ต] Tree & Graph ๋ฌธ์ (0) | 2023.03.15 |
S3) Unit 8. [์ค์ต] Coz'Mini Hackaton (Todo-List) (2) | 2023.03.10 |
S3) Unit 7. [์ค์ต] OAuth(๊นํ๋ธ) ์ฌ์ฉํด์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (0) | 2023.03.09 |
S3) Unit 7. [์ค์ต] Token & Cookie ์ฌ์ฉํด์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (0) | 2023.03.09 |