File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ N , M = map (int , input ().split ())
2+ inp = input ()
3+ answer = input ()
4+
5+ dp = [[0 ] * (M + 1 ) for _ in range (N + 1 )]
6+
7+ for i in range (N + 1 ):
8+ for j in range (M + 1 ):
9+
10+ if i == 0 or j == 0 :
11+ if i == 0 and j == 0 :
12+ continue
13+ # 빈 문자열에서 정답 문자열을 만드는 최소 편집 거리
14+ if i == 0 and j != 0 :
15+ dp [i ][j ] = dp [i ][j - 1 ] + 1
16+ # 빈 문자열에서 답안 문자열을 만드는 최소 편집 거리
17+ if i != 0 and j == 0 :
18+ dp [i ][j ] = dp [i - 1 ][j ] + 1
19+ else :
20+ # 비교 문자가 같은지 아닌지 판단
21+ if inp [i - 1 ] == answer [j - 1 ]:
22+ # 같으면 좌상단 대각선 값을 그대로 가져옴
23+ dp [i ][j ] = dp [i - 1 ][j - 1 ]
24+ else :
25+ # 비교 문자가 달라도 i나 v를 휘갈겨 쓴 경우
26+ if inp [i - 1 ] == 'i' :
27+ if answer [j - 1 ] == 'l' or answer [j - 1 ] == 'j' :
28+ dp [i ][j ] = dp [i - 1 ][j - 1 ]
29+ continue
30+ elif inp [i - 1 ] == 'v' :
31+ if answer [j - 1 ] == 'w' :
32+ dp [i ][j ] = dp [i - 1 ][j - 1 ]
33+ continue
34+
35+ # 비교문자가 다른 경우 위, 좌측, 좌상단 대각선 값 중 최소값을 선택한 후 1을 더해준다.
36+ dp [i ][j ] = min (dp [i - 1 ][j ], dp [i - 1 ][j - 1 ], dp [i ][j - 1 ]) + 1
37+
38+ print (dp [N ][M ])
You can’t perform that action at this time.
0 commit comments