일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 네이버 지도 api
- VituralBox
- 동적계획법
- Mysql5.7
- Floyd-Warshall
- 나무자르기
- 이분매칭
- 분할정복
- 이친수
- Flpyd-Warshall
- 알고스팟
- Ubuntu64bit
- pythonanywhere
- 알고리즘
- 축사 배정
- 피노나치 수열
- 쉬운 계단 수
- 코드그라운드
- 다이나믹 프로그래밍
- 연속합
- 백준
- 피보나치수열
- 이분 매칭
- 최소신장트리
- 최소스패닝트리
- 이분탐색
- tensorflow
- 백트래킹
- SpringBoot
- 세그먼트 트리
Archives
- Today
- Total
초보개발자
[1777] 순열복원 본문
- 난이도: 하
- 입력: 테스트 케이스 N, N개의 원소를 가진 inversion sequence
- 출력: inversion sequence에 대응하는 순열을 출력한다.
- 소스
#include <iostream> #include <vector> #define MAX 100000 using namespace std; int main(){ int N; cin >> N; int inversion[MAX]; vector<int> origin; for (int i = 0; i < N; i++) cin >> inversion[i]; for (int j = 0; j < N; j++){ if (inversion[j] == 0) origin.push_back(j + 1); else{ vector<int>::iterator pos = origin.end(); pos -= inversion[j]; origin.insert(pos, j + 1); } } for (int i = 0; i < N; i++) cout << origin[i] << " "; return 0; }
- 소스 설명:
inversion sequence에 입력된 값을 vector를 이용해서 1~N까지 차례대로 추가하였다. 추가하는 방법은 i번째 원소의 값만큼 origin의 end부터 떨어진 장소에 i를 추가하는 방식이다. 만약 0일 경우, push_back을 사용하였는데, 없어도 아무런 문제가 없을 것으로 예상된다. linked list나 array를 사용했을 때는 시간초과가 떴지만 vector를 이용하니 성공하였다.
Comments