20251012 baekjoon
This commit is contained in:
parent
498c695901
commit
165f66b193
45
code_study/Baekjoon/ts/30805.ts
Normal file
45
code_study/Baekjoon/ts/30805.ts
Normal file
@ -0,0 +1,45 @@
|
||||
export {};
|
||||
|
||||
type pair = [number, number]; // [value, index]
|
||||
|
||||
const input: string[] = require("fs").readFileSync(0).toString().trim().split('\n');
|
||||
const [N, M]: number[] = [Number(input[0]), Number(input[2])];
|
||||
let A: number[] = input[1].split(' ').map(Number);
|
||||
let B: number[] = input[3].split(' ').map(Number);
|
||||
|
||||
const comparator = (a: pair, b: pair) => {
|
||||
if(a[0] === b[0]) return a[1] - b[1];
|
||||
return b[0]-a[0];
|
||||
};
|
||||
|
||||
let pairA: pair[] = A.map((v,i)=>[v,i]);
|
||||
let pairB: pair[] = B.map((v,i)=>[v,i]);
|
||||
|
||||
pairA.sort(comparator);
|
||||
pairB.sort(comparator);
|
||||
|
||||
let subsequence: number[] = [];
|
||||
let limitA = -1, limitB = -1;
|
||||
let idxA = 0, idxB = 0;
|
||||
|
||||
while(idxA < N && idxB < M) {
|
||||
const [valA, posA]: number[] = pairA[idxA];
|
||||
const [valB, posB]: number[] = pairB[idxB];
|
||||
|
||||
if(valA===valB) {
|
||||
if(posA > limitA && posB > limitB) {
|
||||
subsequence.push(valA);
|
||||
limitA = posA;
|
||||
limitB = posB;
|
||||
idxA++;
|
||||
idxB++;
|
||||
}
|
||||
else if(posA <= limitA) idxA++;
|
||||
else idxB++;
|
||||
}
|
||||
else if(valA > valB) idxA++;
|
||||
else idxB++;
|
||||
}
|
||||
|
||||
console.log(subsequence.length);
|
||||
if (subsequence.length !== 0) console.log(...subsequence);
|
||||
Loading…
x
Reference in New Issue
Block a user