※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀 더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소입니다.
https://codeup.kr/problem.php?id=1498
1. 문제
2. 문제 해석
3. 소스 코드
문제
n개의 데이터를 배열에 입력 받은 후, g개씩 묶어 비교한 후, 작은 값만 들어간 배열을 만들고 출력해보자. 6개의 데이터가 다음과 같이 입력되었을 때, 1 2 3 4 5 6 3개씩 묶어 비교한 후, 작은 값만 들어간 배열을 만들어 아래와 같이 출력하면 된다. 1 4 |
입력
첫 번째 줄에 배열의 크기 n과 묶을 개수 g가 입력된다. |
출력
g개 씩 묶어 비교한 후 작은 값만 골라 저장한 배열을 출력한다. |
입력 예시
5 3 |
출력 예시
1 2 |
2. 문제풀이
이 문제의 어려운점은 그룹으로 딱나누어 떨어지지 않는부분이라고 생각합니다. 인풋값이 5개인데 3그룹씩 묶으면 데이터 하나가 비어있기 때문입니다. 따라서 저는 데이터 크기가 넘기전까지만 비교를하며 계산을 했습니다. 자세한것은 아래의 소스코드에 적혀있습니다. |
3. 소스코드
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
|
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
//들어오는 개수, 묶는 단위, 배열
int length, g, a[100]{ 1000 };
cin >> length >> g;
//입력받기
for (int i = 0; i < length; i++) cin >> a[i];
//g만큼씩 증가시키며 반복
for (int i = 0; i < length; i += g) {
int num = a[i];
//묶음만큼 반복처리
for (int j = 0; j < g; j++) {
//들어오는 데이터의 크기를넘어갔다면 정지
if (i + j >= length) break;
//작은것 찾기
num = min(num, a[i + j]);
}
cout << num << " ";
}
return 0;
}
|
'코딩테스트 > 코드업' 카테고리의 다른 글
진격 후 결과 C++(1509)[코드업, codeup] (0) | 2020.01.07 |
---|---|
나도 IQ 150 C++(1508)[코드업, code up] (0) | 2020.01.06 |
2차원 차이 배열 만들기 5-4 C++(1495)[코드업, Code up] (0) | 2019.12.26 |
1차원 차이 배열 만들기 5-3 C++(1494)[코드업, codeup] (0) | 2019.12.25 |
2차원 누적 합 배열 만들기 5-2 C++(1493)[코드업, code up] (0) | 2019.12.24 |
댓글