일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- datetime
- Dictionary
- 2557
- floor
- SUM
- 리스트 컴프리헨션
- 소수
- 에라토스테네스의 체
- 외래키
- 자료구조
- convention
- ceil
- 세그먼트 트리
- list comprehension
- itertools
- 파이썬
- timestamp
- flask
- lower_case_table_names
- 네이밍
- SUM()
- BOJ
- Codeforces
- 큰 수 나누기
- python
- enumerate
- mysql
- 딕셔너리
- FOREIGN KEY
- project euler
Archives
- Today
- Total
늒네 기록
[BOJ-JS] 9011번 - 순서 본문
9011번: 순서
n개의 정수로 된 순서 S= (s1, s2, ..., sn)가 있다. 여기서 si ≠ sj이고, 1 ≤ si ≤ n이다. S로부터 새로운 순서 R = (r1, r2, ..., rn)을 얻을 수 있는데, 여기서 ri는 S의 부분 순서 {s1, s2, ..., si-2, si-1} 중에서
www.acmicpc.net
이 문제와 거의 같은 코드로 풀린다. 9011번의 경우 한 케이스당 나오는 숫자 개수가 100개라서 O(n^2)으로 푸는 것에 대한 걱정을 전혀 하지 않아도 된다는 정도의 차이가 있다.
난이도는 기존의 다른 기여들에서 제시한 것과 같이 골5를 주었다.
a=(0+require('fs').readFileSync(0)).split`
`
for(j=0;j<+a[0];j++){
n=+a[2*j+1]
b=a[2*j+2].split` `.map(i=>+i)
x=Array(n).fill(0).map((e,i)=>i+1)
x.reverse()
r=[]
for(i=n-1;i>=0;i--){
if(b[i]>=x.length)break
y=x.length-1-b[i]
r.push(x[y])
x.splice(y,1)
}
r.reverse()
console.log(i==-1?r.join` `:'IMPOSSIBLE')
}
반응형
'알골 공부 기록 > BOJ' 카테고리의 다른 글
[BOJ-JS] 1274번 - 커피숍1 (0) | 2024.03.09 |
---|---|
[BOJ-JS] 12844번 - XOR (0) | 2024.03.08 |
[BOJ-JS] 8120번 - Coding of Permutations (0) | 2024.03.06 |
[BOJ-JS] 6213번 - Balanced Lineup (1) | 2024.03.05 |
[BOJ-JS] 1008번 - A/B (0) | 2023.07.29 |
Comments