์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- ๋ฒ๋ค๋ง
- html
- ์คํ ์ด์ธ ์ฝ๋
- Study
- jsx
- css
- ์ปดํจํฐ ๊ณตํ
- JavaScript
- State
- Lifting state
- prototype
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ ์คํธ ์์
- React
- fetch api
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ๋ฒ์ง ๋ชจํ
- props drilling
- css animation
- ํผํฐ ๋ชจ๋น
- ์๋งจํฑ์์
- git
- ๊ณ ์ฐจํจ์
- Cmarket
- wai-aria
- ์ ์ด์ฝฅ ๋์จ
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- BFS์ DFS
- Effect Hook
- WEB
- Today
- Total
roqkf
์คํฐ๋ ๊ธฐ๋ก 20 ๋ณธ๋ฌธ

๋ฌธ์ ๋ชฉ๋ก

โค๏ธ๐ฅ ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ

function solution(s) {
let word = [];
// ์คํ์ผ๋ก ๋ฃ์ด์ ๋ง์ง๋ง๊ณผ ๋ง์ง๋ง+1๊ฐ ๊ฐ์ผ๋ฉด ๋นผ์ฃผ๊ธฐ
// ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ด์๋๋ word์ ์๋ฌด๊ฒ๋ ์์ผ๋ฉด, ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ๊ฐ ์ฑ๊ณต๋ ๊ฒ์ด๋ฏ๋ก 1๋ฆฌํด
for (let i = 0; i < s.length; i++) {
word.push(s[i]);
if (word.length >= 2 && word.at(-1) === word.at(-2)) {
word.pop();
word.pop();
}
}
return !word.length ? 1 : 0;
}
solution('baabaa');
์คํ์ ์ด์ฉํด์ ํ์๋ค! ์คํํ๋ฉด ์์ ์ ํ์๋ ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ๋ฐ์ ์๊ฐ์ด ์๋..
function solution(s){
var stack = [];
for(let i = 0; i<s.length; i++){
if(stack[stack.length-1] != s[i]){
stack.push(s[i]);
}
else{
stack.pop();
}
}
if(stack.length>0) return 0;
else return 1;
}
๋์๋ ์ฝ๋! ๋ค๋ฅธ ๋ถ๋ถ๋ค์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง ๋๋ ์ ์ด์ ๋ฃ์ด์ฃผ๊ณ ํ์๋๋ฐ ๋์๋์ ์ง๊ธ ๋ฃ์ ๊ฐํ๊ณ ๋ง์ง๋ง ๊ฐ์ด ๊ฐ์์ง ํ์ธํด ์ฃผ์๋ค ์ด๋ ๊ฒ ํด ์ค๊ฒ ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ ์ข์ ๋ณด์ฌ์ ๊ฐ์ ธ์๋ค!
โค๏ธ๐ฅ ์์ด ๋๋ง์๊ธฐ

โ ์คํจ ์ฝ๋
function solution(n, words) {
//? ์์ ๋งํ ๋จ์ด์ ๋ง์ง๋ง ๋ฌธ์๋ก ์์ํ๋ ๋จ์ด ๋งํ๊ธฐ
//! ๊ฐ์ฅ ๋จผ์ ํ๋ฝํ๋ ์ฌ๋ ๋ฒํธ, ๋ช ๋ฒ์งธ ์ฐจ๋ก์ธ์ง
// ์ง๊ธ๊น์ง ๋งํ ๋จ์ด๋ connectGame push ์์ผ ์ค์ ํ์ฌ ๋จ์ด๊ฐ connectGame์ ์๋ค๋ฉด ํ๋ฝ
//
let connectGame = [words[0]];
let turn = 0;
for (let i = 0; i < words.length; i++) {
//? ์ฒซ๋ฒ์งธ๋ ๋ฐ๋ก ํต๊ณผ
if (i === 0) continue;
const before = words[i - 1];
const now = words[i];
//? ์ ์ ๋งํ ๋จ์ด ์ฌ์ฉํ๋ฉด ํ๋ฝ
if (connectGame.includes(now)) {
break;
}
//! ํ์ฌ ๋จ์ด์ ์ฒซ๊ธ์๊ฐ ์ ๊ธ์์ ๋ง์ง๋ง ๊ธ์์ ๊ฐ์์ง ๋น๊ต
if (now.at(0) === before.at(-1)) {
turn++;
connectGame.push(words[i - 1]);
connectGame.push(words[i]);
}
}
//? [ํ๋ฝ ๋ฒํธ, ๋ช ๋ฒ์งธ ์ฐจ๋ก]
//? ๊ฒ์ turn์ด words์ ๊ธธ์ด๋งํผ ๋์๊ฐ๋ค๋ฉด ํ๋ฝ์๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก [0, 0]
if (turn + 1 === words.length) return [0, 0];
return (turn + 2) % n === 0
? [n, Math.ceil(turn / n)]
: [(turn + 2) % n, Math.ceil(turn / n)];
}
์คํจํ๋ ์ฝ๋ ์๊ฐ์ด๊ณผ๋ ์๋๊ณ ๊ทธ๋ฅ ์คํจ์ด๋ค... ์ฌ์ ๋ ๋ชจ๋ฅด๊ฒ ๋ค ์ผ๋จ ์ฑ๊ณต์ฝ๋ ๋จผ์ ๋ณด์!
โญ ์ฑ๊ณต ์ฝ๋
function solution(n, words) {
//? ์์ ๋งํ ๋จ์ด์ ๋ง์ง๋ง ๋ฌธ์๋ก ์์ํ๋ ๋จ์ด ๋งํ๊ธฐ
//! ๊ฐ์ฅ ๋จผ์ ํ๋ฝํ๋ ์ฌ๋ ๋ฒํธ, ๋ช ๋ฒ์งธ ์ฐจ๋ก์ธ์ง
// ์ง๊ธ๊น์ง ๋งํ ๋จ์ด๋ connectGame push ์์ผ ์ค์ ํ์ฌ ๋จ์ด๊ฐ connectGame์ ์๋ค๋ฉด ํ๋ฝ
//
let connectGame = [words[0]];
console.log(connectGame);
//? ์ฒซ๋ฒ์งธ๋ ๋ฐ๋ก ํต๊ณผ
for (let i = 1; i < words.length; i++) {
const before = words[i - 1];
const current = words[i];
//! ํ์ฌ ๋จ์ด์ ์ฒซ๊ธ์๊ฐ ์ ๊ธ์์ ๋ง์ง๋ง ๊ธ์์ ๊ฐ์์ง ๋น๊ต
if (
current.at(0) === before.at(-1) &&
connectGame.indexOf(current) === -1
) {
connectGame.push(current);
} else {
//? [ํ๋ฝ ๋ฒํธ, ๋ช ๋ฒ์งธ ์ฐจ๋ก]
return [(i % n) + 1, parseInt(i / n) + 1];
}
}
//? ํ๋ฝ์๊ฐ ์์ผ๋ฉด [0, 0]
return [0, 0];
}
์คํจ์ฝ๋๋ ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด ๊ฐ์ฅ ํฐ ๊ฑด ์ด๋ฏธ ๋งํ๋ ๋จ์ด๋ผ๋ฉด ํ๋ฝ์ํค๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค. ์ฑ๊ณต ์ฝ๋์์๋ indexOf๋ฅผ ํตํด์ ํด๋น ์์๊ฐ ์๋์ง ํ์ธํ์๊ณ , ์คํจ ์ฝ๋์์๋ includes๋ก ํ๋ค๋ ์ ์ด๋ค... ์๋๋ฉด ๋ด๊ฐ ๋ฆฌํด ์ํค๋ ๊ณณ์์ ์๋ชปํด ์ฃผ์์๊น?,,, ๋์ค์ ์ฒ์๋ถํฐ ๋ฏ์ด๋ณด๊ณ ๋ค์ ํ์ด์ผ๊ฒ ๋ค.
/**
1. ์ด์ ์ ๋์จ ๋จ์ด๊ฐ ๋ค์ ๋์ค๋์ง
2. ์ง์ ์ ๋์จ ๋จ์ด์ ๋ง์ง๋ง ๋ฌธ์(character)๊ฐ ์ด๋ฒ์ ๋ณด๊ณ ์๋ ๋จ์ด์ ์ฒซ๋ฒ์งธ ๋ฌธ์์ ๋์ผํ์ง
*/
function solution(n, words) {
let answer = [0,0];
let last = words[0][words[0].length-1];
let hs = new Set();
hs.add(words[0]);
console.log(hs)
for (let i = 1; i < words.length; i++) {
if (words[i][0] != last || hs.has(words[i])) { // hs๋ฐฐ์ด์ word[i]๋ฅผ ๊ฐ๊ณ ์๋์ง
answer[0] = i%n+1;
answer[1] = parseInt(i/n)+1;
console.log(answer[0])
console.log(answer[1])
break;
}
last = words[i][words[i].length-1];//๋ง์ง๋ง ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ
hs.add(words[i]); //hs๋ฐฐ์ด์ ๋จ์ด ์ถ๊ฐํ๊ธฐ
}
return answer;
}
solution(3,["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"]);
๋์๋ ์ฝ๋! set์์ ์ถ๊ฐํ๊ณ has๋ก ํด๋น ์ธ๋ฑ์ค๊ฐ ์๋์ง ํ์ธํ๋ ๋ฉ์๋๋ฅผ ์๊ฒ ๋์๋ค! Set์ ํญ์ ์ค๋ณต ์์ ๋ ์ฉ๋๋ก๋ง ์ฌ์ฉํ์๋๋ฐ ์๋ก์ด ์ฝ๋,, ๊ตฟ๊ตฟ
โค๏ธ๐ฅ ๊ตฌ๋ช ๋ณดํธ

โ ์คํจ์ฝ๋
function solution(people, limit) {
// ๊ฐ๋ฒผ์ด ์ฌ๋, ๋ฌด๊ฑฐ์ด ์ฌ๋ ์ ๋ ฌ ํ
// ์ ์ผ ๋ฌด๊ฑฐ์ด ์ฌ๋ + ์ ์ผ ๊ฐ๋ฒผ์ด ์ฌ๋ ๋ฃ์ด์ง๋ฉด shift! ํด์ฃผ๊ธฐ
let light = [...people].sort((a, b) => a - b);
let heavy = [...people].sort((a, b) => b - a);
let boat = 0;
for (let i = 0; i < heavy.length; i++) {
// ๋ฌด๊ฑฐ์ด ์ฌ๋, ๊ฐ๋ฒผ์ด ์ฌ๋ ๋๋ฉด boat++ ํด ์ฃผ๊ณ ์ฌ๋๋ค์ด ๋ณดํธ๋ฅผ ํ์ผ๋ ๋นผ์ค๋ค
// ๋นผ์คฌ์ผ๋ ๋ค์ ์ฒ์๋ถํฐ ๋น๊ตํด์ผ ๋๋ฏ๋ก i--
if (heavy[i] + light[i] <= limit) {
heavy.shift();
heavy.pop();
light.shift();
light.pop();
boat++;
i--;
} else {
heavy.shift();
light.pop();
boat++;
i--;
}
}
return boat;
}
solution([70, 80, 50], 100);
for๋ฌธ ์์์ shift(), pop()์ ์จ์ค์ ์๊ฐ์ด๊ณผ๋ก ์คํจํ ์ฝ๋์ด๋ค. ๋์๋๊ป์ ์คํฐ๋๊ฐ ๋๋๊ณ ๊ณต์ ํด ์ฃผ์ ๋ธ๋ก๊ทธ๋ฅผ ํตํด์ ๋ฐฐ์ด ๋ด์์์ ๋ฉ์๋๋ค์ ์๊ฐ ๋ณต์ก๋์ ๋ํด์ ์ ์ ์์๋ค. shift์ ๊ฒฝ์ฐ์๋ ์์ ๊ฐ์ ์ ๊ฑฐํ๊ณ ๋๋จธ์ง ์ธ๋ฑ์ค๋ค์ด 1๋งํผ ์์ผ๋ก ์์ผ ๋๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ธ๋ฑ์ค๊ฐ ๋ผ ์ ์ฒด ์ธ๋ฑ์ค๊ฐ ๋ฐ๋๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(N)์ด๋ค!
push, pop : O(1)
shift, unshift : O(N)
์ฐธ๊ณ : [์๊ฐ๋ณต์ก๋](์ฐธ๊ณ : https://parkparkpark.tistory.com/m/101)
โญ ์ฑ๊ณต ์ฝ๋
function solution(people, limit) {
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ
// ์ ์ผ ๋ฌด๊ฑฐ์ด ์ฌ๋ + ์ ์ผ ๊ฐ๋ฒผ์ด ์ฌ๋ ๋ฃ์ด์ง๋ฉด boat++ ํด์ฃผ๊ธฐ
let heavy = [...people].sort((a, b) => b - a);
let boat = 0;
console.log(heavy);
// ํฌํฌ์ธํฐ๋ก ํ๊ธฐ
// [80, 70, 50, 50]
//! i j
//? i j i + j๊ฐ limit๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, j-- ํด์ ํฌ์ธํฐ ์ด๋
for (let i = 0, j = heavy.length - 1; i <= j; i++) {
if (heavy[i] + heavy[j] <= limit) {
j--;
}
boat++;
}
console.log(boat);
return boat;
}
solution([70, 50, 80, 50], 100);
for๋ฌธ ๋ด์์ ์ ์ธํ๋ ๊ฒ์ ๋ ๋ฒ ํ์ฌ ํฌํฌ์ธํฐ ๊ฐ๋ ์ผ๋ก ํ์๋ค! ์์ ์คํจ์ฝ๋์์๋ ์ง๊ด์ ์ด๊ฒ ํ์์ง๋ง,,, ์๊ฐ์ด๊ณผ๋ก ์์ฝ์ง๋ง ํฌํฌ์ธํฐ๋ฅผ ํด์ ํ์ด๋ณธ ๊ฑด ์ด๋ฒ์ด ์ฒ์์ด๋ผ ์ข์๋ฐ ใ ใ ใ !!
'๐ป Development > Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฐ๋ ๊ธฐ๋ก 22 (0) | 2023.01.09 |
---|---|
์คํฐ๋ ๊ธฐ๋ก 21 (0) | 2023.01.09 |
์คํฐ๋ ๊ธฐ๋ก 18 (0) | 2022.12.19 |
์คํฐ๋ ๊ธฐ๋ก 17 (0) | 2022.12.16 |
์คํฐ๋ ๊ธฐ๋ก 15 (0) | 2022.12.11 |