중복을 알아내는 가장 쉬운 방법은?

acidd15의 이미지

하나의 필드를 가지고 필드의 데이터는 길이가 일정하지 않은 string데이터를 가지며,NULL이나 공백값은 없습니다.

이런 데이터행이 1000개 이상일 경우,이 데이터에서 중복을 찾아내는가장 쉽고 빠른 방법은 무엇일까요?

주어진조건: perl이나 엑셀같을 것을 자유롭게 활용한다.
제약조건: DBMS를 사용할수 없다.

예전에 스크립트를 만들었는데,요즘은 뭐 만들려면 귀차니즘이 압박해 오는군요...

항상 전부를 아는것이 아니기에 다른 분들의 노하우에 귀기울려 보렵니다.

seoleda의 이미지

쏘팅하면 돼잖아요? ^^

익명 사용자의 이미지

sorting이요? 그 방법도 여러가지가 있을텐데..

현재 스크립트 짜서 단순비교 루프 돌려서 중복검사 마쳤습니다.--;

이 주제는 별로 의미가 없었던듯...

pynoos의 이미지

sort data.txt | uniq -d

보다 쉬운 방법이 있을까요?

익명 사용자의 이미지

오호~ 그런 방법이?

익명 사용자의 이미지

작업하고자 하는 열이 B열이라고 할때...
B열을 소트...
C열에서 =IF(B1 = B2,"OK",FALSE) 사용.
C열확장...

amister의 이미지

md5와 hash table 을 사용하여 간단하게 할 수 있습니다.

우선 static hash table을 구축합니다. (메모리가 허락하는 한 크게)

그리고 strings를 하나씩 읽어서 MD5를 구하고, MD5 값을 hashing을 하여
key 값을 구하고 이를 이용하여 hash table에 strings 데이터와 같이 넣습니다.

모두 처리한 후에, hash table의 각 bucket을 돌아다니면서 element가
2개 이상인 것들에 대해서 일반적인 중복찾기방법 (단순 비교)를 해줍니다.
이렇게 하면 비교 횟수를 크게 줄일 수 있습니다.

전체 데이터의 대부분이 서로 중복되는 것이라면 위 방법에서 약간 잔머리를
굴려 sorting하는 것보다는 훨씬 빠르게 찾아낼 수 있습니다.

lifthrasiir의 이미지

저도 처음에 uniq 얘기가 나오지 않을까 했는데, 질문하신 분께서 허무한 결과를 말씀해 주셔서... orz 역시 알고리즘 쪽으로 가면 소팅 아니면 hash table을 사용하는 방법이 가장 일반적인 것 같습니다. (각각 공간 복잡도, 시간 복잡도 면에서 유리하군요. 알아서 잘 골라 쓰세요 :3)

- 토끼군

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.