๐ป
[๋ฐฑ์ค] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ - 1083. ์ํธ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ - 1083. ์ํธ
๋ํจ๋ 2020. 2. 27. 12:02๋ฌธ์
ํฌ๊ธฐ๊ฐ N์ธ ๋ฐฐ์ด A๊ฐ ์๋ค. ๋ฐฐ์ด์ ์๋ ๋ชจ๋ ์๋ ์๋ก ๋ค๋ฅด๋ค. ์ด ๋ฐฐ์ด์ ์ํธํ ๋, ์ฐ์๋ ๋ ๊ฐ์ ์์๋ง ๊ตํํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ตํ์ ๋ง์๋ด์ผ S๋ฒ ํ ์ ์๋ค. ์ด๋, ์ํธํ ๊ฒฐ๊ณผ๊ฐ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋ท์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ๊ฐ ์์๊ฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 1000000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋ง์ง๋ง ์ค์๋ S๊ฐ ์ฃผ์ด์ง๋ค. S๋ 1000000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ด ์๋ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
7
10 20 30 40 50 60 70
1
์์ ์ถ๋ ฅ1
20 10 30 40 50 60 70
์์ ์ ๋ ฅ2
5
3 5 1 2 4
2
์์ ์ถ๋ ฅ2
5 3 2 1 4
์์ ์ ๋ ฅ3
10
19 20 17 18 15 16 13 14 11 12
5
์์ ์ถ๋ ฅ3
20 19 18 17 16 15 14 13 12 11
์๊ฐ
๋งจ ์ฒ์์ ๋ฌธ์ ๋ฅผ ํ์ด์ ์์ ์ ์ถ๋ ฅ์ ๋น๊ตํด๋ณด๋ ๋ง๊ธธ๋ ๋ด๊ฐ ์๊ฐํ๊ณ ์๋ ๊ฒ ๋ง๋ค๋ผ๊ณ ์๊ฐํ๋ค.
์ฒ์์ ์๊ฐํ๋ ๊ฑฐ๋ ์ธ๋ฑ์ค๋ฅผ 0๋ถํฐ ์์ํด์ ๋ค์ ์ธ๋ฑ์ค์ ๋น๊ตํด๊ฐ๋ฉด์ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด์๋ค.
ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฃ์์ ๋ ๋ต์ด ์ ๋์ค๊ธธ๋ ์ ์ถํ๋๋ ํ๋ ธ๋ค๋ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
๋ญ๊ฐ ์๋ชป๋๋ ์ถ์ด์ ๊ฒ์ํด๋ณด๋ ์ ๋ ฅ ์ด์ฉ๊ตฌ ์ ์ฉ๊ตฌ ์ฌ์ ์ ์ด์ฉ๊ตฌ ์ ์ฉ๊ตฌ ์ฌ๋ฌ ์ง๋ฌธ๊ธ์ด ๋ง์๋ค.
์์ ์ผ์ด์ค๊ฐ 3๊ฐ๋๊น while(~scanf("%d", &n)) ์จ์ ์ ๋ ฅ์ ๋ฐ์์ผ๋๋ค... ํ๊ธธ๋ ์์ ํด์ ์ ์ถํ๋๋ ์ด๋ฒ์๋ ์ถ๋ ฅ ์ด๊ณผ. ์ถ๋ ฅ ์ด๊ณผ ์ถ๋ ฅ์ด ๋๋ฌด ๋ง๋ค๋ ๊ฑด๋ฐ ์ํผ ๊ทธ๋์ ์ดํด๋ฅผ ๋ชปํ๋ค.
+) ์ฒ์์ ์ ๊ทผ(์ค๋ต)
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,s;
while(~scanf("%d", &n)){
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
cin >> s;
int temp;
while(s-->0){
for(int i=0; i<n-1; i++){
if(arr[i] < arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
break;
}
}
}
for(int j=0; j<n; j++){
cout << arr[j] << " ";
}
}
return 0;
}
๋ง์ ๋ถ ํ์ด์ ์ค๋ช ์ ๋ฃ๊ณ ๋ฌธ์ ๋ฅผ ์์ ์ ๋ชป ์ดํดํ๊ณ ์์๊ตฌ๋ ์ถ์๋ค. ์์ ์ ๋ ฅ๋ค์ด ์ข ๋ ๋ค์ํ์ผ๋ฉด ์ข์์ ํ ๋ฐ ๋๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ๋ค๋ ๋ฌธ์ ๊ฐ ์ ์ดํด๊ฐ ์๋๋ค๊ณ ํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์์๋ฅผ ๋ค์ด ๋ฌธ์ ์ดํด๋ฅผ ๋ค์ํด๋ณด์.
์๋ฅผ ๋ค๋ฉด,
6
10 20 30 40 70 60
5
1๋ฒ์งธ) 10 20 30 70 50 60
2๋ฒ์งธ) 10 20 70 30 50 60
3๋ฒ์งธ) 10 70 20 30 50 60
4๋ฒ์งธ) 70 10 20 30 40 60
5๋ฒ์งธ) 70 20 10 30 40 60 --> ๊ฒฐ๊ณผ ์ถ๋ ฅ
์ด๋ฐ ์์ผ๋ก ๊ณผ์ ์ด ์ ๊ฐ๋๋ค.
์ด์ ์๋์ ์ฝ๋๋ฅผ ์ค๋ช ํ์๋ฉด,
newSort() : ์๋ก์ด ์ ๋ ฌ์ ์ ์ํ๋ ํจ์์ด๋ค.
l : ์ธ๋ฑ์ค ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์์ด๋ค.
max : ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์์ด๋ค.
newSort()๋ผ๋ ํจ์๋ฅผ ์ ์ํ๋๋ฐ, newSort()์์ ์ฒซ๋ฒ์งธ for ๋ฌธ์์ j <= j+s ๋ก ํ๋ ์ด์ ๋ s๋ฒ๊น์ง ๊ตํ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, s๋ฒ ์์ ์์์ ๊ตํ์ ์๋ฃํด์ผ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌํ์ฌ max๊ฐ์ ์ฐพ๊ณ ๊ทธ ๋์ ์ธ๋ฑ์ค j์ ๊ฐ์ l์ ์ ์ฅํ๋ค. ๋ง์ฝ l์ด i์ ๊ฐ์ง ์์ผ๋ฉด, for๋ฌธ์ ๋๋ฉด์ ์์๋ฅผ ํ์นธ์ฉ ๋ฐ์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ i๋ฒ์งธ์๋ max๊ฐ์ ๋ฃ๋๋ค. ๋ฐ๋ณตํ ํ์(l-i) ๋งํผ s์์ ๋นผ์ฃผ๊ณ ์ด๋ฅผ ๋ฐ๋ณตํ๋ค. s๊ฐ 0์ด๋ฉด ๋น ์ ธ๋์จ๋ค.
์์ฑํ ์ฝ๋
#include<iostream>
using namespace std;
int a[50];
int n, s;
void newSort() {
for (int i = 0;i < n;i++) {
int max = a[i]; // ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์
int l = i; // ๊ฐ์ฅ ํฐ ๊ฐ์ผ ๋, ๊ทธ ๋์ ์ธ๋ฑ์ค ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์
for (int j = i+1; j <= i + s; j++) {
if (j == n) break;
if (max < a[j]) {
max = a[j];
l = j;
}
}
if (l != i) {
for (int k = l; k > i; k--) { // ํ ์นธ์ฉ ๋ฐ์ด์ค๋ค.
a[k] = a[k - 1];
}
a[i] = max;
s -= (l - i);
}
if (s == 0) break;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 0;i < n;i++){
cin >> a[i];
}
cin >> s;
newSort();
for (int i = 0;i < n;i++){
cout << a[i] << ' ';
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ - 1120. ๋ฌธ์์ด (0) | 2020.02.28 |
---|---|
[๋ฐฑ์ค] ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ - 12866. ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2020.02.27 |
[๋ฐฑ์ค] DFS์ BFS - 2468. ์์ ์์ญ(DFS ํ์ด + BFS ํ์ด) (0) | 2020.02.26 |
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 2579. ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2020.02.25 |
[๋ฐฑ์ค] ์ ๋ ฌ - 2947. ๋๋ฌด ์กฐ๊ฐ (0) | 2020.02.24 |