안녕하세요 영상 잘 보고있습니다! swift로 작성한 코드인데 ```swift class Solution { func isIsomorphic(_ s: String, _ t: String) -> Bool { let s: [Character] = Array(s) let t: [Character] = Array(t) var dict1: [Character: Character] = [:] var dict2: [Character: Character] = [:] for i in s.indices { let character1 = dict1[s[i]] let character2 = dict2[t[i]] if character1 == nil && character2 == nil { dict1[s[i]] = t[i] dict2[t[i]] = s[i] continue } if character1 == t[i] && character2 == s[i] { continue } return false } return true } } ``` ```swift func isIsomorphic(_ s: String, _ t: String) -> Bool { let s: [Character] = Array(s) let t: [Character] = Array(t) var dict1: [Character: Character] = [:] var dict2: [Character: Character] = [:] for i in s.indices { let character1 = dict1[s[i]] let character2 = dict2[t[i]] if character1 == nil && character2 == nil { dict1[s[i]] = t[i] dict2[t[i]] = s[i] continue } else if character1 == t[i] && character2 == s[i] { continue } return false } return true } ``` 두 코드의 차이점은 for문에서 else if 사용하는 부분만 다릅니다! 저는 첫번째 코드랑 두번째 코드랑 같다고 생각하는데 첫번째 코드는 리트코드에서 실행하면 컴파일 오류가 나는 경우가 있습니다ㅜ 왜 이런 오류가 발생하는지 궁금합니다
@코드없는프로그래밍 Жыл бұрын
제가 swift는 한번도 써보지 않아서 잘 모릅니다. 대략적으로 보기에 함수 앞 부분 _ s: String, _ t: String) -> Bool { let s: [Character] = Array(s) let t: [Character] = Array(t) 여기서 s와 t를 재정의 한것으로 보이는데 swift에서는 문제가 없나요?
@bromp8052 Жыл бұрын
@@코드없는프로그래밍 문자열을 재정의한 이유는 swift에서는 문자열을 배열처럼 인덱스를 사용해서 접근이 불가능해서 character의 배열로 만들어줘서 인덱스를 사용해서 편하게 접근하기 위해서 재정의해준겁니다!
@코드없는프로그래밍 Жыл бұрын
컴파일 오류라고하면 변수 재정의가 원인일 수 있습니다.
@loganj62033 жыл бұрын
처음에 해쉬테이블의 크기가 알파벳 크기만큼이니 Space complexity가 O(1)이 아니라 O(n)이 되야되는게 아닌가요? 헷갈리네요.
@코드없는프로그래밍3 жыл бұрын
말씀하신대로 알파벳 리딩파트까지 계산하면 O(n)이 맞습니다. 여기서는 해쉬맵의 효용을 설명하기 위해 O(1)으로 고려햐였습니다. 정확히는 O(n)입니다. 감사합니다.
@plttji26153 жыл бұрын
안녕하세요, 공유하신 코드내용과 다르게 저는 해쉬테이블을 1개 이용해서 구현했는데요, def isIsomorphic(s: str, t: str) -> bool: hash_table = {} for x,y in zip(s,t): if hash_table.get(x) is None: hash_table[x] = y continue if hash_table.get(x) == y: continue return False return True 뭐가 문제인지 알것 같으면서도 모르겠어요ㅠㅠ 왜 1개 테이블을 사용하면 안되는건가요? 감사합니다!
@코드없는프로그래밍3 жыл бұрын
counter example을 드리자면 s가 "badc" 이고 t가 "baba" 인경우 b가 b에 매칭이 되고, d가 또 b에 매칭이 됨으로 test fail이 됩니다. 즉 하나의 char가 두개이상의 char에 매칭이 되는 경우를 생각해야 합니다.
@plttji26153 жыл бұрын
@@코드없는프로그래밍 이해했습니다. 매번 답변해주셔서 정말 감사합니다!
@plttji26153 жыл бұрын
@@코드없는프로그래밍 설명하신 부분이 이문제랑, 뒤에 있는 word pattern 문제에서 2개의 hash table를 사용하는 핵심 idea인거네요?