중복을 알아내는 가장 쉬운 방법은?
글쓴이: acidd15 / 작성시간: 수, 2005/05/25 - 10:34오전
하나의 필드를 가지고 필드의 데이터는 길이가 일정하지 않은 string데이터를 가지며,NULL이나 공백값은 없습니다.
이런 데이터행이 1000개 이상일 경우,이 데이터에서 중복을 찾아내는가장 쉽고 빠른 방법은 무엇일까요?
주어진조건: perl이나 엑셀같을 것을 자유롭게 활용한다.
제약조건: DBMS를 사용할수 없다.
예전에 스크립트를 만들었는데,요즘은 뭐 만들려면 귀차니즘이 압박해 오는군요...
항상 전부를 아는것이 아니기에 다른 분들의 노하우에 귀기울려 보렵니다.
Forums:
쏘팅하면 돼잖아요? ^^
쏘팅하면 돼잖아요? ^^
sorting이요? 그 방법도 여러가지가 있을텐데..현재 스크립트
sorting이요? 그 방법도 여러가지가 있을텐데..
현재 스크립트 짜서 단순비교 루프 돌려서 중복검사 마쳤습니다.--;
이 주제는 별로 의미가 없었던듯...
sort data.txt | uniq -d보다 쉬운 방법이 있을까
sort data.txt | uniq -d
보다 쉬운 방법이 있을까요?
---
http://coolengineer.com
오호~ 그런 방법이?
오호~ 그런 방법이?
엑셀을 이용하는 방법도 있던데....
작업하고자 하는 열이 B열이라고 할때...
B열을 소트...
C열에서 =IF(B1 = B2,"OK",FALSE) 사용.
C열확장...
md5와 hash table 을 사용하여 간단하게 할 수 있습니다.
md5와 hash table 을 사용하여 간단하게 할 수 있습니다.
우선 static hash table을 구축합니다. (메모리가 허락하는 한 크게)
그리고 strings를 하나씩 읽어서 MD5를 구하고, MD5 값을 hashing을 하여
key 값을 구하고 이를 이용하여 hash table에 strings 데이터와 같이 넣습니다.
모두 처리한 후에, hash table의 각 bucket을 돌아다니면서 element가
2개 이상인 것들에 대해서 일반적인 중복찾기방법 (단순 비교)를 해줍니다.
이렇게 하면 비교 횟수를 크게 줄일 수 있습니다.
전체 데이터의 대부분이 서로 중복되는 것이라면 위 방법에서 약간 잔머리를
굴려 sorting하는 것보다는 훨씬 빠르게 찾아낼 수 있습니다.
저도 처음에 uniq 얘기가 나오지 않을까 했는데, 질문하신 분께서 허무
저도 처음에 uniq 얘기가 나오지 않을까 했는데, 질문하신 분께서 허무한 결과를 말씀해 주셔서... orz 역시 알고리즘 쪽으로 가면 소팅 아니면 hash table을 사용하는 방법이 가장 일반적인 것 같습니다. (각각 공간 복잡도, 시간 복잡도 면에서 유리하군요. 알아서 잘 골라 쓰세요 :3)
- 토끼군
댓글 달기