[Lv1] ๊ฐ์ ์ซ์๋ ์ซ์ด
function solution(arr)
{
const answer = [arr[0]]; //์ฒซ๋ฒ์งธ ์์๋ ํญ์ ํฌํจ
for(let i=1;i<arr.length;i++){
if(arr[i]!==arr[i-1]){ //ํ์ฌ์ ์ด์ ์์์ ๋น๊ต
answer.push(arr[i])
}
}
return answer;
}
๐ Refactor
function solution(arr)
{
return arr.filter((v,i)=>arr[i]!==arr[i+1])
}
[Lv2] ๊ธฐ๋ฅ๊ฐ๋ฐ
function solution(progresses, speeds) {
var answer = [];
const work=[]
//1. ์์
์ผ ๋ฐฐ์ด ์์ฑ
for(let i=0;i< progresses.length;i++){
let left=100-progresses[i];
left=Math.ceil(left/speeds[i])
work.push(left)
}
//2. ์ํ
let deploy=work[0];
let count=0;
for(let i=0;i<work.length;i++){
if(work[i]<=deploy){
count++
}else {
answer.push(count)
deploy=work[i];
count=1;
}
//๋ง์ง๋ง์์์ผ๋
if(i===work.length-1){
answer.push(count);
return answer;
}
}
}
๐ Refactor
function solution(progresses, speeds) {
var answer = [];
//1. ์์
์ผ ๋ฐฐ์ด ์์ฑ
const work=progresses.map((v,i)=>Math.ceil((100-v)/speeds[i]));
//2. ์ํ
let deploy=work[0];
let count=0;
for(let i=0;i<work.length;i++){
if(work[i]>deploy){
answer.push(count);
count=0;
deploy=work[i];
}
count++;
}
answer.push(count); //๋ง์ง๋ง ์์ push
return answer;
}
[Lv2] ์ฌ๋ฐ๋ฅธ ๊ดํธ
function solution(s){
let count = 0;
for(let i=0;i<s.length;i++){
if(count<0){
return false
}
if(s[i]==='('){
count++
}else {
count--
}
}
if(count!==0){
return false
}
return true
}
์ํ๋ฅผ ๋ง์ณค์๋ count๊ฐ 0์ด๋์์ด๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋ ์ ์๋๋ฐ,
- ์ด๋ฆฐ๊ดํธ๊ฐ ๋ชจ๋ ๋ซํ์ผ ์๋ก์ด ์ด๋ฆฐ๊ดํธ๊ฐ ๋์ค๋๊ฒ์ ์๋๋ค.
- โจ ์ด๋ฆฐ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ซํ๋์ง ํ์ธํ๋ ๋ฌธ์ ์ด๋ฏ๋ก, ์ํํ๋ฉด์ ์ด๋ฆฐ๊ดํธ์ ๋นํด ๋ ๋ง์ ๋ซํ๊ดํธ๊ฐ ๋์์๋ ์๋๋ค. (์์ ์ฒดํฌ)
๐ ์ค๋ต ๋ ธํธ
function solution(s){
let count = 0;
for(let i=0;i<s.length;i++){
if(count<0){
return false
}
if(s[i]==='('){
count++
}else {
count--
if(s[i+1]==='('){
if(count!==0){
return false
}
}
}
}
if(count!==0){
return false
}
return true
}
)๋ซํ๊ดํธ ์ดํ ( ์ด๋ฆฐ ๊ดํธ๊ฐ ๋์ฌ๋, ์ด๋ฏธ ๊ดํธ๊ฐ ์์ฑ๋์ด์ผํ์ง ์๋ ๋ผ๋ ์๊ฐ์ผ๋ก if๋ฌธ์ ์ถ๊ฐํ๋ค.
ํ์ง๋ง (()()) ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์กฐ๊ฑด๋ฌธ์ ์ํด false๊ฐ ๋๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค.
๐ Refactor
[Lv2] ํ๋ก์ธ์ค
function solution(priorities, location) {
let maxPriority=Math.max(...priorities);
let queue = priorities.map((priority, index) => [priority, index]);
let answer = 0;
while(queue.length){
let [curPriority,curIndex]=queue.shift();
if(maxPriority===curPriority) //ํ์ถ
{
answer++
if(location===curIndex){ //Location ๋ฐ๊ฒฌ
return answer;
}
maxPriority = Math.max(...queue.map(([priority, _]) => priority));
}
else { //๋ค์ ์ค์๊ธฐ
queue.push([curPriority,curIndex]);
}
}
return answer;
}
์ ์ฒด๋ฅผ ์ํํ์ง ์๊ณ , ํด๋น location์ index๊ฐ ํ์์ ๋น ์ ธ๋๊ฐ๋ return์ ํ๋ ค๋ฉด, index๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด(queue)๋ก ์๋ก ๋ง๋ค์๋ฐ์ ์์๋ค.
โ maxPriority๊ฐ shift๋ ์์์ ์ฐ์ ์์ ๊ฐ์ด ๊ฐ์์ง ๊ธฐ์ค์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ์์ฑํ๋ค.
ํ์์ ํ์ถํ ๋, maxPriority๋ฅผ ์๋ก ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ๊ณ , ๋ช๋ฒ์งธ๋ก ๋น ์ ธ๋๊ฐ๋์ง๋ answer๋ก ์นด์ดํธํด์ฃผ๊ณ , ํ์ถํ curIndex๊ฐ ์ฐพ๊ณ ์๋ location์ด๋ฉด return ํด์ฃผ๋ฉด๋๋ค.
๋ค์ ์ค์ ์์ผํ ๋, shiftํ ์์๋ค์ ๋ค์ pushํด์ฃผ๋ฉด ๋๋ค.
๐ Refactor
function solution(priorities, location) {
// ๊ฐ ์์์ ์๋ ์ธ๋ฑ์ค์ ํจ๊ป ํํ์ ์์ฑํฉ๋๋ค.
let queue = priorities.map((priority, index) => [priority, index]);
let answer = 0;
while (queue.length > 0) {
let [currentPriority, currentIndex] = queue.shift();
// ํ์ฌ ์์๊ฐ ์ต๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
if (queue.some(([priority, _]) => priority > currentPriority)) {
// ๋ง์ฝ ๋ ๋์ ์ฐ์ ์์์ ์์๊ฐ ์๋ค๋ฉด, ํ์ฌ ์์๋ฅผ ํ์ ๋์ ๋ค์ ์ถ๊ฐํฉ๋๋ค.
queue.push([currentPriority, currentIndex]);
} else {
// ํ์ฌ ์์๋ฅผ ์คํํฉ๋๋ค.
answer++;
// ํ์ฌ ์์๊ฐ ์ฐพ๊ณ ์๋ ์์น์ธ์ง ํ์ธํฉ๋๋ค.
if (currentIndex === location) {
return answer;
}
}
}
return answer;
}
maxPriority๊ฐ์ ๋ฐ๋ก ๊ตฌํ๋๊ฒ์ด ์๋๋ผ, some์ ์ฌ์ฉํด์ queue์์ ํ์ฌ ๋งจ์(shift)์ ์ฐ์ ์์๋ณด๋ค ๋์๊ฒ ํ๋์ด์์ด๋ผ๋ ์์ผ๋ฉด, ํ์ถํ ์ ์๋ ์กฐ๊ฑด๋ฌธ์ ๋ง๋ ๋ค. maxPriority๋ ๋ชจ๋ ๊ฐ์ ์ํํด์ ์ต๋๊ฐ์ ๊ตฌํด์ผํ์ง๋ง some์ true๊ฐ ๋๋์๊ฐ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์ ์ข ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
function solution(priorities, location) {
const idxArr=Array(priorities.length).fill(0).map((v,i)=>i);
const maxPriority=Math.max(...priorities);
let answer = 0;
while(priorities.length){
if(priorities[0]<max){ //๋ค๋ก๊ฐ์ ๋ค์ ์ค์๊ธฐ
priorities.push(priorities.shift());
idxArr.push(idxArr.shift()); //idx๋ ๋๊ฐ์ด ๋ฐ๋ผ๊ฐ๊ธฐ
}else { //ํ์ถ
priorities.shift();
answer++;
maxPriority=Math.max(...priorities); //maxPriority ์
๋ฐ์ดํธ
if(idxArr.shift()===location){
return answer;
}
}
}
}
์์ ์ ๋ง๋
index๋ฅผ ์ถ๊ฐํ ์๋ก์ด array๋ฅผ ๋ง๋ค์ง ์๊ณ , index๋ฅผ ์ํ ์๋ก์ด idxArray๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
๋๊ฐ์ ํ๋ฆ์ผ๋ก ๊ฐ์ผํ๊ธฐ ๋๋ฌธ์, ์ฐ์ ์์๊ฐ ๋ค๋ก๊ฐ์ ๋ค์ ์ค์์ผํ ๋, idxArray๊ฐ๋ ๋๊ฐ์ด ์ด๋ํด์ผํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
[Lv2] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
function solution(bridge_length, weight, truck_weights) {
let bridge=Array(bridge_length).fill(0);
let brdigeWeight=0;
let count = 0;
//1์ด ์ฆ๊ฐํ, ๋งจ ์ฒซ ํธ๋ญ ์ง์
count++;
bridge.shift(); //?
brdigeWeight+=truck_weights[0];
bridge.push(truck_weights.shift());
//๋๊ธฐ์ค์ธ ํธ๋ญ์ด ์๊ฑฐ๋, ๋ค๋ฆฌ์์ ์ฌ์ ํ ํธ๋ญ์ด ์กด์ฌํ ๋ (๋ค๋ฆฌ์ ํธ๋ญ์ด ํ๋์ด์์ด๋ผ๋ ์กด์ฌ)
while(brdigeWeight>0){
count++; //1์ด ์ฆ๊ฐ
brdigeWeight-=bridge.shift(); //ํ์ ๋งจ์ ๊บผ๋ด๊ธฐ
//๋๊ธฐ์ค์ธ ํธ๋ญ์ค์ ๋ค๋ฆฌ์ ์ฌ๋ฆด์ ์๋์ง ํ์ธ
if(brdigeWeight+truck_weights[0]<=weight && truck_weights.length){
//๋ค๋ฆฌ์ ์ฌ๋ฆฌ๊ธฐ
brdigeWeight+=truck_weights[0];
bridge.push(truck_weights.shift());
}else {
//๋ฌด๊ฒ๋ก ์ธํด ๋ค๋ฆฌ์ ์ฌ๋ฆด์ ์์
bridge.push(0); //ํ๋ฆ์ ๋ง์ถ๊ธฐ์ํด 0์ ์ฝ์
}
}
return count;
}
bridge ๋ฐฐ์ด์ ํตํด, ์ค์ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ๊ณผ์ ์ ํํํ๊ณ ์๋ฎฌ๋ ์ด์ ํ๋๋ฐ, ํธ๋ญ์ด ๋ค๋ฆฌ์ ์ง์ ํ๋ฉด pushํ๊ณ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ฉด์ ์ ์งํ ๋๋ง๋ค ๋ฐฐ์ด์์ ํ์นธ์ฉ ์์ผ๋ก ์ด๋ํ๋ค. ๋ค๋ฆฌ์ ๋์ ๋๋ฌํ๋ฉด, ํธ๋ญ์ ๋ฐฐ์ด์์ ์ ๊ฑฐ๋๋ ๋ฐฉ์์ด๋ค.
โ shift : ๋ค๋ฆฌ์์ ํธ๋ญ์ด ์ ์งํ๊ฒ ๋ง๋ ๋ค.
โ push : ๋ค๋ฆฌ์์ ํธ๋ญ์ ์ฌ๋ฆฐ๋ค. (truck shift๋ฅผ ํตํด) , bridgeWeight๋ฅผ ๋ํ๋ค.
โ๏ธbridge.length๋ ํญ์ ๋์ผํด์ผํ๊ธฐ๋๋ฌธ์, ๋ฌด๊ฒ์ด๊ณผ๋ก ์ธํด ๋ค์ํธ๋ญ์ด ๋ค๋ฆฌ์ ์ง์ ํ์ง ๋ชปํด๋ push๋ฅผ ํด์ค์ผํ๋ค. (0)
์ฒซ๋ฒ์งธ ํธ๋ญ์ด ๋ค๋ฆฌ์ ์ง์ ํ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ค๋ฅด๊ธฐ๋๋ฌธ์ ๋ฐ๋ก ์ฝ๋๋ฅผ ์ง์ค์ผํ๋ค. ๋๊ธฐ์ค์ธ ํธ๋ญ์ด ์๊ฑฐ๋, ๋ค๋ฆฌ์์ ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ๋ค๋ฆฌ์์ ํธ๋ญ์ด ์์ ์กด์ฌํ์ง ์์์ ์๊ธฐ๋๋ฌธ์ ์ด์ ๋ํ ์กฐ๊ฑด๋ฌธ์ weight๋ฅผ ์ด์ฉํ๋ค.
[Lv2] ์ฃผ์๊ฐ๊ฒฉ
function solution(prices) {
var answer = [];
for(let i=0;i<prices.length;i++){
let count=0;
for(let j=i+1;j<prices.length;j++){
count++;
if(prices[i]>prices[j]){
break;
}
}
answer.push(count);
}
return answer;
}
count๋ฅผ ์ฆ๊ฐํ๋ ์ฝ๋๋ฅผ if๋ฌธ ์ดํ์ ์จ์, ๋จ์ด์ง ๊ฐ๊ฒฉ์ ๋ง๋๊ฒ ๋๋ฉด break๋ก for๋ฌธ์ ๋น ์ ธ๋๊ฐ๊ธฐ ๋๋ฌธ์ ์นด์ดํธ๊ฐ ์ฆ๊ฐ๋์ง ๋ชปํ๋ ์ค์๊ฐ ์์๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2024.07.26 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2024.07.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (0) | 2024.07.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2024.07.23 |
[ํด์] ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ Kit ๋ฌธ์ ํ์ด (JS) (0) | 2024.04.29 |