PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/06/27 19:10:50
Name 타케우치 미유
Subject [질문] C++ 배열 검사 질문
최근에 열심히 C++을 공부하고 있는데(언리얼을 위해서...)

배열 부분을 공부하다가 도저히 안풀리는 문제가 나와서 질문 올립니다.

문제는 다음과 같습니다.

- 정수를 10개 입력받아서 정수인수 10개를 가지는 배열을 생성한 다음 중복된 숫자가 없이 출력하는 문제입니다.

여기서 저는 배열을 한개만 사용해서 풀려고 했는데 도저히 안되겠어서 배열 2개를 사용해서 풀려다가 또 실패를 하고 현재는 GG를 친 상태입니다.

아마 저녁 먹고 다시 시도할것 같은데 궁금한 건 이 문제를 배열 1개만 사용해서 풀 수 있는지가 궁금합니다.



통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
19/06/27 19:15
수정 아이콘
음... 중복되지 않게 출력하는 쪽이 문제라면 아래 링크와 같이 하면 될 것 같습니다(중간쯤 C++).
https://www.geeksforgeeks.org/print-distinct-elements-given-integer-array/
어떤점이 문제인지 잘 모르겠네요...
19/06/27 19:39
수정 아이콘
배열 1개만 사용했을 떄 가장 좋은 방법은 sort한 다음 출력하는 것이죠

그러면 가장 마지막에 출력한 숫자와 인덱스의 다음숫자를 비교해서 중복이면 다음 인덱스로 건너뛰면 되니까요
타케우치 미유
19/06/27 19:46
수정 아이콘
소팅을 안하고 출력을 하려고 한다면 좀 삽질을 거하게 해야되겠죠...?
19/06/27 19:48
수정 아이콘
그럼 사실상 저장해야 할 공간이 하나 더 있어야 됩니다

그것이 배열이 되었건 STL에서 사용하는 맵이나 셋같은 컨테이너가 되었건 말이죠
타케우치 미유
19/06/27 19:49
수정 아이콘
결국 배열을 하나 더 쓰는게 강제되겠네요....

답변 감사합니다!
얼음숨결
19/06/27 20:12
수정 아이콘
삽질을 거하게까지는 아니고 변수 하나를 더 쓰면 될 거 같은데요.
ex. int end = 9로 선언....
일단 0~9까지 입력 받은 수로 채워 넣고, 0번째와 1번째, 0번째와 2번째... 와 같이 비교해 나갑니다.
그러다가 0번째와 4번째가 같으면 array[4] = array[end] 로 하고, end = end - 1; 해 주고, 다시 0번째와 4번째를 비교합니다.
0번째와 end번째의 비교가 끝나면 1번째와 2번째, 1번째와 3번째.... 이렇게 비교해 나가면 될 것 같은데요.
아마 다른 방법도 있겠지만 장실에서 잠시 써 봤습니다... ^^;;
19/06/28 00:59
수정 아이콘
그렇게 했을 경우의 문제점을 배열 하나로 표현하면

3 1 3 1 3 1 3 1 3 1

이렇게 있을 경우 처음에 이미 출력된 3에 대한 정보를 2번째 루프 돌때 비교해야 할 3은 그전에 3이란 숫자가 이미 출력이 되어 있는지 아닌지 알 수가 없습니다.

과거에 대한 기록은 출력으로 이미 끝났기 때문이죠.
얼음숨결
19/06/28 08:29
수정 아이콘
(수정됨) 말씀 하신 배열을 예로 들면
3 1 3 1 3 1 3 1 3 1 에서 배열의 0번 Item 인 3과의 비교가 끝나고 나면
3 1 1 1 1 1 ? ? ? ? 이 되고, end 는 5 가 되지 않을까요?

그리고 1번 item인 1 과의 비교가 끝나면
3 1 ? ? ? ? ? ? ? ? 이 되고, end 는 1이 되고요.

그 다음에 3 1 출력하면 되는 거 아닌가요? 3은 첫번째 루프 돌고 바로 출력해도 상관 없고요.
한 바퀴가 끝나면 이미 비교한 놈과 같은 애는 end 가 가리키는 index 안 쪽에 더 이상 없으므로 이미 출력 되어 있는지 아닌지 알 필요 없을 거 같은데요..
초짜장
19/06/27 20:12
수정 아이콘
(수정됨) 소팅을 안하려면 매 루프마다 배열 오른쪽을 싹 서칭해서 중복이 발생하면 해당 숫자는 버리면 됩니다. 이렇게 하면 각 중복정수 중에서 가장 오른쪽에 있는 것만 출력하게 되죠. 근데 O(n2)이니 알고리즘상으론 소팅보다 못할수도 있죠. 뭐 아주 무식하게 생각한거라 추가로 개선이 되긴 하고, 사이즈가 10밖에 안되니 실질적으론 소팅보다 나을겁니다.
c++ 제약이 없다면 자바스크립트에서 빈 오브젝트에 다 집어넣으면서 덮어쓰면 끝나는 문제이긴 합니다만 출제자 의도는 어레이를 쓰라는거니까 역시 의미가 없겠네요.
초짜장
19/06/27 22:58
수정 아이콘
제대로 하자면 입력 받으면서 배열에 넣을 때 바이너리 트리 구성해서 넣으면 됩니다.
회색사과
19/06/27 20:22
수정 아이콘
주 언어가 파이썬인데...
cpp 포기하기를 잘 했네요....

파이선이면 가독성 조금 포기하면 한줄에 입력부터 출력까지 끝납니다.

print (set(input().split(“ “)))
19/06/27 21:38
수정 아이콘
그냥 배열에 들어있는 값 비교해서 없을때만 넣어주먄.되지 않나요?
엔타이어
19/06/27 22:14
수정 아이콘
걍 입력받고 배열에 넣을때 기존에 넣은 값들과 한번 싹 스캔해서 비교한담에 다를때만 추가하세요.
소트가 O(nlogn)이고 이게 O(n^2)로 비효율이긴 하겠지만 어차피 10개면 신경안써도 됩니다.
담배피는씨
19/06/27 22:15
수정 아이콘
(수정됨) 일단 도전!!!
int ar[10]= {1,2,...};
for( int i = 0; i< 10; i++ )
{
int nFind = 0;
for( int j = 0; j<10 ; j++)
{
if( ar[i] == ar[j])
nFind++;
}
if(nFind != 1)
printf("%d",ar[i]);
}
스페이스가 왜 안먹는거야 ㅠ.ㅠ
세잎클로버
19/06/28 06:57
수정 아이콘
&&쓰셔야할듯


RETURN 0
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137815 [질문] 위스키 추천 부탁 드리겠습니다~ [11] JKay4476 19/09/23 4476
137814 [질문] 택배 오배송 질문드립니다. [7] papaGom2883 19/09/23 2883
137813 [질문] 서민형 안심전환대출, 근린 시설은 안되는 거죠? [6] 약쟁이3262 19/09/23 3262
137812 [질문] [컴퓨터] 모니터 파워 키고 부팅할때랑 안키고 부팅할때 발생하는 문제 [1] 아무거나해주세요2689 19/09/23 2689
137811 [질문] 차량용 유선충전기 추천 부탁드려요 더쿤더2325 19/09/23 2325
137810 [질문] 언젠가부터 회사컴이 매일 윈도우 업데이트를 합니다 [4] Mindow2821 19/09/23 2821
137809 [질문] 인터넷 100m, 500m 차이가 큰가요? [6] 유니꽃8886 19/09/23 8886
137808 [질문] 엑셀 수정본을 원본에 저장해버렸을때 [2] 나른한오후5408 19/09/23 5408
137807 [질문] 김포공항 제주행 비행기 관련 문의드립니다. [4] 삭제됨3952 19/09/23 3952
137806 [질문] 중고차 매물 한번 봐주시겠어요? [6] 개미3442 19/09/23 3442
137805 [질문] 영양제에 대해 잘아시는분 계신가요~? [4] LubyH3222 19/09/23 3222
137804 [질문] 와우 클래식 뉴비 [13] 오만과 편견6155 19/09/23 6155
137803 [질문] wwe 계속보신분 질문드려요(00~03) [5] StondColdSaidSo2521 19/09/23 2521
137802 [질문] 초브라 조한규씨 지금 근황이 궁금합니다 [3] 잰지흔4402 19/09/23 4402
137801 [질문] 다이사이(도박) 조작 질문 [10] 크앙5899 19/09/23 5899
137800 [질문] 그랜저 하이브리드 vs 가솔린 [21] 먼산바라기7392 19/09/23 7392
137799 [질문] 인스타에서 '다른앱에 게시'로 트위터에 올릴 때 관련 질문입니다. [2] 밧줄의땅2552 19/09/23 2552
137798 [질문] 부팅시 검은화면만 뜨는데 해결방법이 있을까요? [2] 네파리안3746 19/09/22 3746
137797 [질문] 이제 드래곤볼 끝이 보이네요.. 본체 견적 점검 부탁드립니다 [1] 몬스터피자3516 19/09/22 3516
137796 [질문] 바다 탐사 vs 우주 탐사 [3] EY5182 19/09/22 5182
137795 [질문] icloud 사진 보관함 잘 쓰시는 분들 질문입니다. [2] 3067 19/09/22 3067
137794 [질문] my t월드 벨소리 구입 후 설정 어떻게 설정하나요? [1] 자도자도잠온다4156 19/09/22 4156
137793 [질문] pooq 쓰시는 분들께 질문드립니다. [4] 강미나3460 19/09/22 3460
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로