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
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
134909 [삭제예정] 건강보험 어떤게 좋을까요? [2] KKAM2414 19/06/28 2414
134908 [질문] 의자 추천 부탁드립니다! [4] 커피소년2953 19/06/28 2953
134907 [질문] 27년전 7백만원은 지금 기준으로 얼마인가요? [5] 파란무테4165 19/06/28 4165
134906 [질문] 커피숍을 개업하는데 어떤 선물을 하는게 좋을까요? [6] 로즈마리3623 19/06/28 3623
134905 [질문] [랑그릿사] 45 클래스업 질문입니다. [9] 열혈둥이2953 19/06/28 2953
134904 [질문] 대신 무언가를 알아봐주는 서비스같은게 있나요? [4] 붉은 느낌2998 19/06/28 2998
134903 [질문] 질문이요. 전자칠판 활용방법이요. [1] moqq1443 19/06/28 1443
134902 [질문] 면세점은 왜 사는건가요? [20] Bellhorn4350 19/06/28 4350
134901 [질문] 버팀목 전세대출 질권 설정 관련 의문점 [5] 안프로6490 19/06/28 6490
134900 [질문] 태그호이어 시계 질문입니다 [13] F.Nietzsche3380 19/06/28 3380
134899 [질문] 자게 댓글 삭제 되나요? [1] 영원한초보1623 19/06/28 1623
134898 [질문] [POE] 엑린이 한번 도와주실분 계실까요? [4] 타키쿤2335 19/06/28 2335
134896 [질문] 칼슘파우더가 효과가 있나요? [4] 유랑4053 19/06/27 4053
134893 [질문] 캡틴 아메리카 방패를 구하고 싶습니다. 어떤 걸 사야 할까요? [3] 삭제됨3217 19/06/27 3217
134892 [질문] 엑셀 동적 범위지정 시에 비어있지 않을 셀만 포함하는 방법? [3] 천국와김밥2330 19/06/27 2330
134891 [질문] [랑그릿사] 저도 진로상담 부탁드립니다. [25] ShuRA2751 19/06/27 2751
134890 [질문] 앱스토어 지불 방법 추가 관련 질문드립니다 [3] Agger1433 19/06/27 1433
134889 [질문] 길거리 설문조사에 대한 질문입니다. [1] funk1785 19/06/27 1785
134888 [질문] 쓸모없는 땅을 버리고(?) 싶습니다. [3] 약쟁이2801 19/06/27 2801
134887 [질문] C++ 배열 검사 질문 [15] 타케우치 미유2581 19/06/27 2581
134886 [질문] 현재 1금융권 무직자모바일대출이나 은행가서 대출가능한 상품이 있나요? 카뱅과 위비 제외 [8] grace3077 19/06/27 3077
134885 [질문] 가정용 쿨링 시트 써보신분 계신가요? 타키쿤1715 19/06/27 1715
134884 [질문] 신차 검수는 직접 해야하나요? [7] 코우가노모안!2930 19/06/27 2930
목록 이전 다음
댓글

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