몇%
myutper
calculator bench📝몇%
텍스트/데이터

텍스트 Diff 비교기

두 텍스트를 라인별로 비교하여 차이점을 하이라이트합니다.

텍스트 Diff 비교기는 두 텍스트를 라인 단위로 비교하여 추가/삭제/변경된 부분을 시각적으로 하이라이트합니다. LCS(Longest Common Subsequence) 알고리즘을 사용하여 정확한 차이를 감지합니다. 코드 리뷰, 문서 수정 확인, 번역본 비교 등에서 두 텍스트의 차이점을 빠르게 파악할 수 있습니다.

input / result surfaceLIVE

원본 텍스트 (A)

4

비교 텍스트 (B)

4
+2
추가
-2
삭제
2
동일

Diff 결과

1 첫 번째 줄
2-두 번째 줄
3+수정된 두 번째 줄
4 세 번째 줄
5-네 번째 줄
6+추가된 다섯 번째 줄

principle

계산 원리

텍스트 Diff의 핵심은 LCS(Longest Common Subsequence, 최장 공통 부분수열) 알고리즘입니다. 두 수열 X(길이 m)와 Y(길이 n)가 주어졌을 때, 양쪽에 공통으로 포함되면서 순서가 유지되는 가장 긴 부분수열을 찾습니다. 이 문제는 동적 프로그래밍(DP)으로 O(mn) 시간과 공간에 해결됩니다.

DP 테이블 L[i][j]는 X의 처음 i개 원소와 Y의 처음 j개 원소의 LCS 길이를 저장합니다. X[i]=Y[j]이면 L[i][j] = L[i-1][j-1] + 1, 다르면 L[i][j] = max(L[i-1][j], L[i][j-1])입니다. 테이블을 역추적하여 실제 LCS를 복원하고, LCS에 포함되지 않는 원소를 추가(+) 또는 삭제(-)로 분류합니다.

Myers의 diff 알고리즘(1986)은 편집 거리(edit distance)를 최소화하는 최단 편집 스크립트를 O(ND) 시간에 찾습니다. N은 두 텍스트의 총 길이, D는 차이(편집 거리)입니다. 대부분의 실제 텍스트는 차이가 적으므로(D << N), 이 알고리즘은 실무에서 매우 빠르게 동작합니다. Git의 diff도 이 알고리즘을 기반으로 합니다.

faq

자주 묻는 질문

cases

실생활 예시

CASE 01

코드 변경사항 확인

기존 코드와 수정된 코드를 비교하여 어떤 줄이 추가/삭제되었는지 확인합니다.

Diff 비교기로 변경사항을 시각적으로 파악하여 코드 리뷰 효율을 높일 수 있습니다.

CASE 02

문서 버전 비교

계약서나 정책 문서의 이전 버전과 최신 버전을 비교하여 수정된 조항을 빠르게 파악합니다. 수백 줄의 문서에서 변경된 부분만 하이라이트로 확인합니다.

문서 전체를 다시 읽지 않아도 변경된 부분만 집중적으로 검토할 수 있습니다.

CASE 03

번역 텍스트 비교

같은 원문의 두 가지 번역본을 비교하여 표현 차이를 분석합니다. 어떤 문장이 다르게 번역되었는지 줄 단위로 확인합니다.

번역 품질 검수 시 두 번역본의 차이점을 빠르게 파악하여 최적의 번역을 선택할 수 있습니다.

CASE 04

설정 파일 변경 추적

서버 설정 파일(nginx.conf, .env 등)의 변경 전후를 비교하여 어떤 설정값이 추가/변경/삭제되었는지 확인합니다.

설정 변경으로 인한 장애 원인을 빠르게 파악하고 복구할 수 있습니다.

CASE 05

SQL 쿼리 변경 확인

최적화 전후의 SQL 쿼리를 비교하여 JOIN 조건, WHERE 절, 인덱스 힌트 등의 변경사항을 확인합니다.

쿼리 최적화 과정에서 변경 사항을 명확히 추적하여 성능 개선 효과를 분석할 수 있습니다.

glossary

용어 사전

Diff
두 텍스트의 차이점을 감지하고 표시하는 것으로, 추가/삭제/변경된 부분을 시각적으로 구분합니다.
LCS (Longest Common Subsequence)
두 수열에서 공통으로 포함되고 순서가 유지되는 가장 긴 부분수열로, diff 알고리즘의 핵심 개념입니다.
편집 거리 (Edit Distance)
한 텍스트를 다른 텍스트로 변환하기 위해 필요한 최소 연산(삽입, 삭제, 치환) 횟수입니다.
동적 프로그래밍 (Dynamic Programming)
큰 문제를 작은 하위 문제로 나누어 결과를 저장하면서 풀어나가는 알고리즘 설계 기법입니다.
Unified Diff
변경 전후의 컨텍스트를 함께 보여주는 diff 출력 형식으로, +/- 기호로 추가/삭제 줄을 표시합니다.
컨텍스트 라인 (Context Line)
diff 출력에서 변경되지 않은 줄로, 변경 위치의 주변 맥락을 보여줘 변경 사항을 쉽게 이해하도록 돕습니다.
패치 (Patch)
diff 결과를 파일에 적용하여 원본을 수정본으로 변환하는 것으로, 코드 배포와 협업에서 사용됩니다.

next tools

관련 계산기