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
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137942 [질문] 민방위 꿀팁좀 주세요.... 뭘로 시간을 때워야 하나요... [25] Secundo8763 19/09/26 8763
137940 [질문] 고구마와 감자 & 다이어트 [21] 서낙도4331 19/09/26 4331
137939 [질문] (약혐) 이게 무슨 날벌레 곤충인가요?? [1] 여자친구2618 19/09/26 2618
137938 [질문] [컴견적] 이륙허가 부탁드립니다. [6] Albert Camus3327 19/09/26 3327
137937 [질문] (겜알못) 풋볼매니저(FM) 재밌게 즐기는 법 질문드려요 [12] 코시엔6579 19/09/26 6579
137936 [질문] 50대 중년 정장 브랜드 추천부탁드립니다 [13] 정어리고래11393 19/09/26 11393
137935 [질문] 파이썬 입문자 질문.. [8] 첸 스톰스타우트2735 19/09/26 2735
137934 [질문] 미국대학->미국대학원 vs 한국대학->미국대학원 어느게 더 나을까요.? [29] 뒷산신령4749 19/09/26 4749
137933 [질문] 여기가 바로 서울 최고 맛집이다!! 하는 곳 아시는분 계신가요 [26] 봄날엔4320 19/09/26 4320
137932 [질문] 오래 서있는 직업은 어떤게 있을까요? [20] Secundo4560 19/09/26 4560
137931 [질문] 전해수기란거 진짠가요? [4] 그말싫4870 19/09/26 4870
137930 [질문] f코드...어떻하면 좋을까요... [12] 비오는거리2855 19/09/26 2855
137929 [질문] 혼밥 잘 못하시는 분들 있나요? [11] 질게만쓰는사람3077 19/09/26 3077
137928 [질문] 선물받은 물건을 파는게 옳은걸까요? [16] 벙아니고진자야4905 19/09/26 4905
137927 [질문] 남성 올인원 로션 추천해주세요!!! [14] 생힝4718 19/09/26 4718
137926 [질문] 운동화에서 쓰레기 냄새가 나는데 어쩌죠? [8] Proactive3168 19/09/26 3168
137925 [질문] 다이어트 이 정도 식단으로 하면 괜찮을까요? [4] 핸드레이크2742 19/09/26 2742
137923 [질문] 내장그래픽 구형컴에서 스타리마스터가 버벅대지 않으려면 어떻게...? [3] 공발업나코템플러3106 19/09/26 3106
137922 [질문] 삼알못)이각 곽사의 악행이 그렇게 심했나요? [2] valewalker4028 19/09/26 4028
137921 [질문]  제꺼 메인보드가 블루투스를 지원하는지 알 수 있을까요? [6] 늑대가낙타낳다2879 19/09/25 2879
137920 [질문] (feat. 이시국) 일본 여행 정보 커뮤니티 없을가요.. [6] 냉면과열무3646 19/09/25 3646
137919 [질문] 다이어트 시작한지 3일된 사람인데 저도 질문이 있습니다. [14] 레너블7754 19/09/25 7754
137918 [질문] 인터넷 업그레이드 관련 질문 입니다. [3] Eulbsyar2849 19/09/25 2849
목록 이전 다음
댓글

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