Q>
- Oh. This new generation of robots is trying to do everything faster than is needed.
(오. 이 새로운 세대의 로봇은 필요한 것보다 더 빨리 모든 것을하려고합니다.)
- Come on!! Gaffer! Can I just replace a string and that's all.
(어서와! 두목! 문자열을 바꿀 수 있을까요?)
- No, young man. You can’t “just replace a string”.
(아니, 젊은 남자. 당신은 "그냥 문자열을 대체 할 수 없다".)
You should respect your memory cards, even though you have a lot of them.
(당신은 당신의 카드가 많더라도 당신의 메모리 카드를 존중해야합니다.)
Now sit and think a little bit.
(이제 앉아서 조금 생각해보십시오.)
How can this string can be replaced in a most efficient way?
(어떻게이 문자열을 가장 효율적인 방법으로 대체 할 수 있습니까?)
- Ok ok. As you wish.
(그래 그래. 원하면.)
Now I should respect even my own hardware.
(이제는 내 하드웨어도 존중해야합니다.)
You are given two strings, line1 and line2.
(line1과 line2라는 두 개의 문자열이 주어집니다.)
Answer, what is the smallest number of operations you need to transform line1 to line2?
(답변, line1을 line2로 변환하는 데 필요한 최소 작업 수는 얼마입니까?)
Operations are:
- Delete one letter from one of strings
- Insert one letter into one of strings
- Replace one of letters from one of strings with another letter
운영 :
- 문자열 중 하나에서 한 문자 삭제
- 문자열 중 하나에 하나의 문자 삽입
- 문자열 중 하나의 문자를 다른 문자로 바꾸기
Input: two arguments, two strings.
(두 개의 인수, 두 개의 문자열)
Output: int, minimum number of operations.
(int, 최소 작업 수입니다.)
Example:
steps_to_convert('line1', 'line1') == 0
steps_to_convert('line1', 'line2') == 1
steps_to_convert('ine', 'line2') == 2
Precondition: 0 <= len(line) < 100
A>
def steps_to_convert(line1, line2):
if len(line1) * len(line2) == 0 : return max(len(line1), len(line2))
# 첫번째 문자열이 같으면 건너띄기
if line1[0] == line2[0]: return steps_to_convert(line1[1:], line2[1:])
# 문자열이 'a'이면 삭제
n1 = steps_to_convert(line1[1:], line2)
# 'l'을 삽입
n2 = steps_to_convert(line2[0] + line1, line2)
# 'x'를 'l'로 바꿈
n3 = steps_to_convert(line2[0] + line1[1:], line2)
return min(n1, n2, n3) + 1
if __name__ == "__main__":
# These "asserts" using only for self-checking and not necessary for auto-testing
assert steps_to_convert('line1', 'line1') == 0, "eq"
assert steps_to_convert('line1', 'line2') == 1, "2"
assert steps_to_convert('line', 'line2') == 1, "none to 2"
assert steps_to_convert('ine', 'line2') == 2, "need two more"
assert steps_to_convert('line1', '1enil') == 4, "everything is opposite"
assert steps_to_convert('', '') == 0, "two empty"
assert steps_to_convert('l', '') == 1, "one side"
assert steps_to_convert('', 'l') == 1, "another side"
print("You are good to go!")
O>
You are good to go!
Process finished with exit code 0
S>
'Python_Matter > Solve' 카테고리의 다른 글
Python Learn the basics Quiz 105 (0) | 2019.06.25 |
---|---|
Python Learn the basics Quiz 104 (0) | 2019.06.25 |
Python Learn the basics Quiz 102 (0) | 2019.06.25 |
Python Learn the basics Quiz 101 (0) | 2019.06.25 |
Python Learn the basics Quiz 100 (0) | 2019.06.25 |