반응형
https://codeup.kr/problem.php?id=1425&rid=0
자리 배치
1. 첫 번째 줄에 학생 수(N)와 한줄에 앉을 수 있는 자리수(C)가 자연수로 주어진다. 단, (1≤N≤99), (1≤C≤10) 2. 둘째 줄에는 N명의 학생 키들이 공백으로 구분되어 입력된다.
codeup.kr
코드
#include <iostream>
using namespace std;
int main()
{
int N, C, input, arr[99];
cin >> N >> C;
for (int i = 0; i < N; i++)
{
cin >> input;
arr[i] = input;
}
for (int j = 0; j < N; j++)
{
int temp, min = 999, minIndex;
for (int k = j; k < N; k++)
{
if (arr[k] <= min)
{
min = arr[k];
minIndex = k;
}
}
temp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = temp;
}
int count = 1;
for (int x = 0; x < N; x++)
{
cout << arr[x] << " ";
if (count % C == 0)
cout << "\n";
count++;
}
return 0;
}
풀이
N명의 학생의 키를 입력받고 오름차순으로 정렬한 뒤 키가 작은 순서대로 한 줄에 C명씩 앉도록 출력하는 문제이다.
학생의 키를 입력받은 뒤 오름차순으로 정렬하는 방법으로는 선택 정렬을 사용하였다.
배열에서 가장 작은 값을 찾은 뒤 0번째 값과 바꾼다. 그다음 작은 값을 찾고 1번째 값과 바꾼다. 이 순서를 배열의 끝까지 반복하였다.
- arr[0]의 값과 arr 배열 내의 가장 작은 값의 위치를 바꾼다.
- arr[1]의 값과 arr 배열 내의 가장 작은 값의 위치를 바꾼다.
- ...
- 정렬을 완료한다.
배열의 값을 오름차순으로 정렬한 뒤 count를 1로 설정한다. 이때 count는 자리가 정해진 학생의 수라고 생각한다.
배열의 값을 출력하는 도중 count의 값이 C로 나머지 연산한 값이 0이라면 교실의 한 줄이 꽉 찬 것이므로 줄 바꿈을 진행한다.
반응형
'문제 해결 > CodeUp' 카테고리의 다른 글
[CodeUp] [C++] 1172번 세 수 정렬하기 (0) | 2024.02.01 |
---|---|
[CodeUp] [C++] 1440번 비교 (0) | 2024.01.23 |
[CodeUp] [C++] 1411번 빠진 카드 (0) | 2024.01.22 |
[CodeUp] [C++] 1430번 기억력 테스트 2 (0) | 2024.01.20 |
[CodeUp] [C++] 1410번 올바른 괄호 1 (괄호 개수 세기) (0) | 2024.01.19 |