문제 링크
https://www.acmicpc.net/problem/5597
배열을 인덱스 0부터 30까지 가지게 배열의 크기를 31로 선언했다.
초기에 배열은 모두 0으로 초기화했다.
출석번호를 N이라고 받으면 arr[N];에 N을 저장하도록 했다.
그리고 인덱스가 0일 때는 출석번호가 아예 들어가지 않으므로 -1을 담도록 했다.
그러면 1부터 30까지 출석번호를 받지 않은 두 번호는
해당 번호로 인덱스를 가지는 배열 요소들이 0이된다.
#include <iostream>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
//배열 전체를 0으로 하고 1은 1에 2는 2에 저장
int arr[31] = { 0, }; // index 0부터 30까지;
arr[0] = -1; // 아무것도 없음
for (int i = 0; i < 28; i++) // 28번 받아라
{
int k;
cin >> k;
arr[k] = k;
}
int flag = 0;
for (int i = 1; i < 31; i++) {
if (arr[i] == 0 && flag == 0) {
cout << i << '\n';
flag = i;
break;
}
}
for (int i = flag + 1; i < 31; i++) {
if (arr[i] == 0)
{
cout << i;
}
}
//예제 입력 3 1 4 5 7 9 6 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
return 0;
}
두 수 중, 작은 수부터 출력을 해야하므로 첫번째 수(작은 수)는 flag에다 저장을 한다.
두번째 수를 찾을 때는 flag+1부터 반복문을 돌리는 기법으로 두번째 수를 찾았다.
백준 17478)재귀함수가 뭔가요? [C++] (0) | 2022.09.22 |
---|---|
백준 11382번 꼬마 정민 문제(자료형 크기에 유의) (0) | 2022.09.04 |
백준 새싹 배열 2738번 행렬 덧셈 (0) | 2022.09.04 |
백준 class1 1157 단어 공부 (0) | 2022.08.22 |
2920번 음계 (블락 적절히 나누기!) (0) | 2022.08.21 |
댓글 영역