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
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
134892 [질문] 엑셀 동적 범위지정 시에 비어있지 않을 셀만 포함하는 방법? [3] 천국와김밥2409 19/06/27 2409
134891 [질문] [랑그릿사] 저도 진로상담 부탁드립니다. [25] ShuRA2857 19/06/27 2857
134890 [질문] 앱스토어 지불 방법 추가 관련 질문드립니다 [3] Agger1498 19/06/27 1498
134889 [질문] 길거리 설문조사에 대한 질문입니다. [1] funk1909 19/06/27 1909
134888 [질문] 쓸모없는 땅을 버리고(?) 싶습니다. [3] 약쟁이2879 19/06/27 2879
134887 [질문] C++ 배열 검사 질문 [15] 타케우치 미유2662 19/06/27 2662
134886 [질문] 현재 1금융권 무직자모바일대출이나 은행가서 대출가능한 상품이 있나요? 카뱅과 위비 제외 [8] grace3240 19/06/27 3240
134885 [질문] 가정용 쿨링 시트 써보신분 계신가요? 타키쿤1829 19/06/27 1829
134884 [질문] 신차 검수는 직접 해야하나요? [7] 코우가노모안!3076 19/06/27 3076
134883 [질문] 물 절약하는 법 없을까요? [17] F.Nietzsche2579 19/06/27 2579
134882 [질문] 여자 팔찌 좀 봐 주시겠어요? ver.2(사진 有) [23] 사이시옷3919 19/06/27 3919
134881 [질문] [랑그릿사] 아주 기본적인 질문 드립니다. [13] Zoya Yaschenko2493 19/06/27 2493
134880 [질문] 대략 커뮤에 뿌려지는 게시물 중에 바이럴은 몇프로정도나 될까요 [8] 별이지는언덕2715 19/06/27 2715
134879 [질문] 문재인 대통령 중국과의 커넥션에 대해서 [21] 4막2장3466 19/06/27 3466
134878 [질문] 에어컨에서 물 떨어뎌서 컴퓨터 선부분이 다 젖었습니다.집주인한테 말해야하나요? [2] 세오유즈키2668 19/06/27 2668
134877 [질문] Lan 벽의 소켓도 cat분류가 있나요? 유열빠2420 19/06/27 2420
134876 [질문] 5,000원짜리 윈도우 질문입니다. [11] 갱생2729 19/06/27 2729
134874 [질문] 대학에서 청강도 지원하나요? [5] 큐브큐브2788 19/06/27 2788
134873 [질문] [랑그릿사] 덱 조언 부탁드려요. [10] 김카리3212 19/06/27 3212
134872 [질문] 교통사고 과실 비율 확인좀 부탁드려요 [18] letina2755 19/06/27 2755
134871 [질문] 여자 팔찌 좀 봐주시겠어요?(사진 有, 1 or 2) [14] 사이시옷3918 19/06/27 3918
134870 [질문] 여의도에서 이성과 2인 식사할 곳 질문드립니다. [7] 삭제됨2184 19/06/27 2184
134869 [질문] 제가 스팀판 Super Mega Baseball 2 일반판을 소장하고 있는데요... Love.of.Tears.2294 19/06/27 2294
목록 이전 다음
댓글

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