Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- AWS
- 파이썬
- 알고리즘
- CS
- 철학
- Local Search
- lightsailor
- Search Algorithm
- computerscience
- 컴퓨터과학
- Simulated Annealing
- 문자열처리
- 배포
- 코드
- node배포
- 문자열
- multer-s3
- Hill Climbing
- node.js
- typescript
- 컴퓨터공학
Archives
- Today
- Total
지식의모듈화
[BOJ] 오큰수 본문
시간초과가 발생한다.
let input =require('fs').readFileSync('./input.txt').toString().trim().split('\n');
let nums= input[1].split(' ').map(e=>Number(e))
// console.log(nums);//[ 3, 5, 2, 7 ]
let ans=[];
ans[nums.length-1]=-1;
for(let i= nums.length-2;i>=0;i--){
if(nums[i]<nums[i+1]) ans[i]=nums[i+1];
else {
//nums[i] << ans[i+1]~ans[ans.length-1]
let check =1;
for(let k=i+1;k<ans.length;k++){
if(nums[i]<ans[k] ) {
ans[i]=ans[k];
check=0;
break;
}
}
if( check) ans[i]=-1
}
};
// console.log(ans);
let str="";
ans.forEach(e=>str+=(e+" "));
console.log(str);
2. 그래서 차곡차곡 스택이 쌓이는 모양을 생각해보아야하는 문제다.
그리고 가장큰게 나올때까지 pop을 계속해줘야하는 문제.. 문제 자체는 어렵지 않지만 이게 stack만 활용하면 풀린다는걸 아는게 어려울 것 같다.
let input =require('fs').readFileSync('./input.txt').toString().trim().split('\n');
let nums= input[1].split(' ').map(e=>Number(e))
// console.log(nums);//[ 3, 5, 2, 7 ]
let ans=[];
ans[nums.length-1]=-1;
let Stack=[]
Stack.push(nums[nums.length-1]);
for(let i= nums.length-2;i>=0;i--){
let last= Stack[Stack.length-1];
if( last> nums[i]){
ans[i]=last;
Stack.push(nums[i]);
}
else{
while( last<=nums[i]&&(Stack.length!==0)){
Stack.pop();
last= Stack[Stack.length-1];
}
if(Stack.length===0) {ans[i]=-1;}
else{
ans[i]=last;}
Stack.push(nums[i]);
}
};
// console.log(ans);
let str="";
ans.forEach(e=>str+=(e+" "));
console.log(str);'PS > BOJ' 카테고리의 다른 글
| [BOJ] 좌표압축 (0) | 2022.07.02 |
|---|---|
| [BOJ] 통계학 (0) | 2022.07.01 |