1차원 단지란 1이 하나 이상 모여있는 집단을 단지라고 한다. 0과 1로 이루어진 100개의 문자열을 받고 단지에 속하는 1의 갯수를 센뒤 오름차순으로 정렬하여 출력하라
입력 예제)
100011011
출력 예제)
1 2 2
다음과 같은 코드를 짜보자.
1. i 번째 문자열이 1인지 확인한다.
1-1. 1이 참이면, 카운트를 하나 더해준다.
1-2 1이 거짓이면, 카운트가 0보다 큰지 확인한다. 0보다 크면 카운트를 배열에 집어넣고 카운트를 0으로 초기화한다.
2. 1과정을 문자열의 끝까지 반복한다.
3.카운트가 0보다 큰지 확인한다. 0보다 크면 카운트를 배열에 집어넣는다.
오름차순은 일일이 분별과정을 거치지 않고 간단히 sort함수를 사용하겠다
sort: http://khgkjg12.blogspot.kr/2016/07/sort-swap-c.html
#include <iostream>
#include <windows.h>
#include <algorithm>
using namespace std;
int main(){
int i,count[100],c=0,r=0;
string str;
cin >> str;
for(i=0;i<str.length();i++){
if(str[i]=='1') c++;
else if(c>0){
count[r++]=c;
c=0;
}
}
if(c>0)count[r++]=c;
sort(count,count+r);
for(i=0;i<r;i++)cout<<count[i]<<" ";
cout<<endl;
system("PAUSE");
return 0;
}
실행결과
100010110100111010101111
1 1 1 1 1 2 3 4
Press any key to continue . . .
입력 예제)
100011011
출력 예제)
1 2 2
다음과 같은 코드를 짜보자.
1. i 번째 문자열이 1인지 확인한다.
1-1. 1이 참이면, 카운트를 하나 더해준다.
1-2 1이 거짓이면, 카운트가 0보다 큰지 확인한다. 0보다 크면 카운트를 배열에 집어넣고 카운트를 0으로 초기화한다.
2. 1과정을 문자열의 끝까지 반복한다.
3.카운트가 0보다 큰지 확인한다. 0보다 크면 카운트를 배열에 집어넣는다.
오름차순은 일일이 분별과정을 거치지 않고 간단히 sort함수를 사용하겠다
sort: http://khgkjg12.blogspot.kr/2016/07/sort-swap-c.html
#include <iostream>
#include <windows.h>
#include <algorithm>
using namespace std;
int main(){
int i,count[100],c=0,r=0;
string str;
cin >> str;
for(i=0;i<str.length();i++){
if(str[i]=='1') c++;
else if(c>0){
count[r++]=c;
c=0;
}
}
if(c>0)count[r++]=c;
sort(count,count+r);
for(i=0;i<r;i++)cout<<count[i]<<" ";
cout<<endl;
system("PAUSE");
return 0;
}
실행결과
100010110100111010101111
1 1 1 1 1 2 3 4
Press any key to continue . . .
댓글
댓글 쓰기