고양이발일기
[Python] LeetCode - Isomorphic Strings 본문
반응형
Problem
Solving Process
보자마자 Dictionary를 활용하고 싶었던 문제였다.
s에서 나온 문자를 t와 key-value로 매칭시켜 검사하고,
s키값과 t 밸류 값이 다르면 false를 리턴하면 되겠다 싶은 문제였다.
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
iso_dic = {}
for i in range(len(s)):
if s[i] not in iso_dic:
iso_dic[s[i]] = t[i]
else:
if iso_dic[s[i]] != t[i]:
return False
return True
하지만 문제가 있었으니!!
s = "badc"
t = "baba"
이 경우, { 'b' : 'b', 'a ': 'a', 'd' : 'b', 'c' : 'a'} 로 s-v 를 key-value로 넣었기에 False로 잡히지 않았던 것이다...
value도 중복이 없게 매칭이 되어야하는 문제였으니 ㅠㅠ
때문에, value를 한 번 더 검사하여 문제는 통과했다 ✨👍
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
iso_dic = {}
for i in range(len(s)):
if s[i] not in iso_dic:
if t[i] not in iso_dic.values():
iso_dic[s[i]] = t[i]
else:
return False
else:
if iso_dic[s[i]] != t[i]:
return False
return True
테스트 케이스는 전 부 통과했지만 !!
효율이 정말 안좋은 편으로 나왔다 ㅋㅋㅋㅋㅋㅋ ㅠ
고수들의 답을 보니 정말.. 많이 배워간다 ~.ㅠ
Solution
class Solution(object):
def isIsomorphic(self, s, t):
map1 = []
map2 = []
for idx in s:
map1.append(s.index(idx))
for idx in t:
map2.append(t.index(idx))
if map1 == map2:
return True
return False
index함수의 경우에는 가장 먼저 발견되는 index의 값을 뱉기 때문에
s = 'egg'
t = 'foo'
의 경우,
map1 = [0,1,1]
map2 = [0,1,1]
로 True 가 정상적으로 나오게 된다 ~.~
index 함수에 대해서 다시 배우게 되는 문제였다!!! 🤔🤔
반응형
'알고리즘' 카테고리의 다른 글
[Python] HackerRank - Tower Breakers (0) | 2023.05.15 |
---|---|
[Python] LeetCode - Is Subsequence (1) | 2023.05.12 |
[Python] HackerRank - Closest Numbers (0) | 2023.05.12 |
[Python] HackerRank - Seperate The Numbers (0) | 2023.05.11 |
[Python] 백준 10815 숫자카드 (1) | 2023.03.23 |
Comments