작성
·
103
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
fridaymorning99님, 질문 주셔서 감사합니다.
두 사람이 0-9까지 카드를 중복없이 각 한 장씩 갖고 있다고 할 때, 중복 입력을 방지하기 위한 예외처리를 구현하는 방법에는 여러 가지가 있습니다. 말씀하신 이중 for문을 사용하는 것도 한 방법이 될 수 있지만, 좀 더 효율적인 방법을 고려해볼 수 있습니다.
예를 들어, 배열을 사용하여 입력받은 숫자를 인덱스로 하여 해당 위치의 값을 변경하는 방법이 있습니다. 각 카드의 숫자는 0부터 9까지이므로 10개의 요소를 가진 배열을 선언하고, 처음에 모든 요소를 0으로 초기화합니다. 사용자로부터 카드 숫자를 입력받을 때 해당 숫자에 해당하는 배열의 인덱스 위치의 값을 1로 변경하고, 이미 1로 설정되어 있다면 중복된 입력으로 간주할 수 있습니다.
#include <stdio.h>
int main() {
int card[10] = {0, }; // 0으로 초기화
int number;
for(int i = 0; i < 10; i++) {
scanf("%d", &number);
if(card[number] == 1) {
printf("중복된 카드입니다.\n");
// 중복 처리 로직
} else {
card[number] = 1;
}
}
return 0;
}
이러한 방법은 이중 for문을 사용할 때 발생할 수 있는 시간 복잡도 문제를 개선할 수 있습니다. 각 숫자의 중복 여부를 효과적으로 확인할 수 있고, 코드의 복잡성도 줄일 수 있습니다.
다른 방법으로는 해시 테이블을 활용하는 방식도 있지만, 주어진 문제의 조건과 입력 크기에 따라 적합한 방법을 선택하는 것이 좋습니다.
질문이나 추가로 궁금하신 부분이 있으시면 언제든지 문의해주세요.