meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • gabagecollecter
  • cpu사용률
  • 안드로이드adaptor
  • 리눅스인증
  • 코틀린자료형
  • 테크커리어
  • Proxy
  • django
  • SASS Variables
  • dp #알고리즘
  • 이차원배열정렬
  • dockersecret
  • Kotlin
  • router-link
  • docker
  • 배포인프라
  • 리눅스방화벽
  • DHCP
  • 중첩라우트
  • 개발자도서

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/Coding test

[코딩테스트 / c++] Inversion Sequence (삽입 정렬 풀이)

2022. 1. 2. 19:41
728x90
반응형

문제

1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 Inversion Sequence라 한다. 예를 들어 다음과 같은 수열의 경우

4 8 6 2 5 1 3 7

1앞에 놓인 1보다 큰 수는 4, 8, 6, 2, 5. 이렇게 5개이고,
2앞에 놓인 2보다 큰 수는 4, 8, 6. 이렇게 3개,
3앞에 놓인 3보다 큰 수는 4, 8, 6, 5 이렇게 4개......

따라서 4 8 6 2 5 1 3 7의 inversion sequence는 5 3 4 0 2 1 1 0 이 된다.
n과 1부터 n까지의 수를 사용하여 이루어진 수열의 inversion sequence가 주어졌을 때, 원래 의 수열을 출력하는 프로그램을 작성하세요.

▣ 입력설명
첫 번째 줄에 자연수 N(3<=N<100)이 주어지고, 두 번째 줄에는 inversion sequence가 숫자 사이에 한 칸의 공백을 두고 주어진다.

▣ 출력설명
오름차순으로 정렬된 수열을 출력합니다.

 

입력 예제

8
5 3 4 0 2 1 1 0

 

출력 예제

4 8 6 2 5 1 3 7

 

풀이

#include<stdio.h>
#include<vector>
#include<algorithm> 

using namespace std;

int C[20];

int main(){

	int n, i, j, pos;
	scanf("%d", &n);
	vector<int> is(n+1), os(n+1); 
	for(i=1; i<=n; i++){
		scanf("%d", &is[i]);
	}
	for(i=n; i>=1; i--){
		pos=i; //i의 처음위치 
		for(j=1; j<=is[i]; j++){
			os[pos]=os[pos+1];
			pos++;//넣을 값 
		}
		os[pos]=i;
	}
	
	for(i=1; i<=n; i++){
		printf("%d ", os[i]);
	}
	  
	
	return 0;	
    
}

이 문제는 삽입 정렬을 이용하여 풀어야한다.  n의 뒤에서의 값부터 비교하여 inversion sequence 개수 만큼 os배열에 담는데 개수만큼 뒤로 이동시켜 넣는다. 위치값 pos는 계속 증가시켜 뒤에 값을 넣는다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'IT_study > Coding test' 카테고리의 다른 글

[코딩테스트 / c++] 백준 1158 요세푸스 문제  (0) 2022.01.18
[코딩테스트 / c++] 공주 구하기 (조세퍼스) 문제  (0) 2022.01.16
[코딩테스트 / c++] Least Recently Used(2018 카카오 캐시 문제 변형)  (0) 2022.01.02
[Coding test Basic with c++] N!의 표현법  (0) 2021.12.27
[Coding test Basic with c++] Anagram(아나그램 : 구글 인터뷰 문제)  (0) 2021.12.25
    'IT_study/Coding test' 카테고리의 다른 글
    • [코딩테스트 / c++] 백준 1158 요세푸스 문제
    • [코딩테스트 / c++] 공주 구하기 (조세퍼스) 문제
    • [코딩테스트 / c++] Least Recently Used(2018 카카오 캐시 문제 변형)
    • [Coding test Basic with c++] N!의 표현법
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바