| 기능 | 설명 |
|---|---|
Swap() | 두 개의 값을 교환하는 함수 |
Sort() | 배열을 오름차순 정렬하는 함수 |
ChooseLotto() | 랜덤한 6개의 로또 번호를 생성하는 함수 |
CheckDuplication() | 중복 여부를 검사하는 함수 |
main() | 프로그램 실행 및 결과 출력 |
void Swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
✅ 기능: 두 변수 a와 b의 값을 교환
✅ 매개변수 전달 방식:
int& a, int& b) 📌 예제 실행
int a = 1, b = 2;
Swap(a, b);
cout << a << " " << b << endl; // 출력: 2 1
➡ Swap(a, b) 호출 후 a와 b의 값이 바뀜
void Sort(int numbers[], int count) {
for (int i = 0; i < count; i++) {
int best = i;
for (int j = i + 1; j < count; j++) {
if (numbers[j] < numbers[best]) {
best = j;
}
}
if (i != best) {
Swap(numbers[i], numbers[best]);
}
}
}
✅ 기능: 배열을 오름차순 정렬
✅ 정렬 알고리즘: 선택 정렬 (Selection Sort)
✅ 동작 방식:
1. i번째 원소를 기준으로 잡고 가장 작은 값을 찾음
2. 찾은 값과 i번째 값을 교환
3. 이 과정을 배열 크기만큼 반복하여 정렬 완료
📌 예제 실행
int numbers[6] = {1, 42, 3, 15, 5, 6};
Sort(numbers, 6);
for (int i : numbers) cout << i << " ";
// 출력: 1 3 5 6 15 42
➡ 선택 정렬을 통해 오름차순 정렬 완료
bool CheckDuplication(int numbers[]) {
bool ret = false;
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 6; j++) {
if (numbers[i] == numbers[j]) {
numbers[j] = 0; // 중복된 값은 0으로 변경
ret = true;
}
}
}
return ret;
}
✅ 기능: 배열에서 중복된 값이 있는지 검사
✅ 동작 방식:
1. 이중 반복문을 사용하여 배열 내의 값 비교
2. 중복 값이 있으면 0으로 변경
3. 중복이 발생했음을 나타내는 true 반환
📌 예제 실행
int numbers[6] = {3, 12, 25, 3, 40, 41};
bool result = CheckDuplication(numbers);
cout << result << endl; // 출력: 1 (중복 있음)
➡ 배열에 중복 값 3이 있어서 true 반환
void ChooseLotto(int numbers[]) {
srand((unsigned)time(0)); // 난수 생성 시드 설정
bool hasDuplication = false;
for (int i = 0; i < 6; i++) {
numbers[i] = (rand() % 45) + 1; // 1~45 사이 난수 생성
}
hasDuplication = CheckDuplication(numbers);
// 중복이 없을 때까지 반복하여 새로운 난수 생성
while (hasDuplication) {
for (int i = 0; i < 6; i++) {
if (numbers[i] == 0) numbers[i] = (rand() % 45) + 1;
}
hasDuplication = CheckDuplication(numbers);
}
Sort(numbers, 6); // 정렬 수행
}
✅ 기능: 1~45 사이의 랜덤한 숫자 6개를 생성
✅ 중복 검사:
1. rand() % 45 + 1을 사용하여 1~45 사이의 난수 생성
2. CheckDuplication() 함수를 사용하여 중복 확인
3. 중복이 있다면 새로운 난수를 다시 생성
4. 모든 값이 고유할 때까지 반복
📌 예제 실행
int numbers[6] = {0, 0, 0, 0, 0, 0};
ChooseLotto(numbers);
for (int i : numbers) cout << i << " ";
➡ 랜덤한 6개의 숫자가 출력됨 (중복 없음)
➡ 숫자는 자동으로 정렬됨
int main() {
// 1. Swap 함수 테스트
int a = 1, b = 2;
Swap(a, b);
cout << a << " " << b << endl; // 출력: 2 1
// 2. 정렬 함수 테스트
int numbers[6] = {1, 42, 3, 15, 5, 6};
Sort(numbers, sizeof(numbers) / sizeof(int));
for (int i : numbers) cout << i << " ";
cout << endl;
// 3. 로또 번호 생성
int numbers2[6] = {0, 0, 0, 0, 0, 0};
ChooseLotto(numbers2);
for (int i : numbers2) cout << i << " ";
return 0;
}
✅ 프로그램 실행 순서:
1. Swap(a, b) 실행 후 a와 b의 값 출력
2. Sort(numbers, 6) 실행 후 정렬된 배열 출력
3. ChooseLotto(numbers2) 실행 후 랜덤한 로또 번호 출력
📌 출력 예시
2 1
1 3 5 6 15 42
5 11 22 28 30 42 (실행할 때마다 값이 바뀜)
➡ 정렬된 숫자 & 랜덤한 로또 번호 출력