개발자 면접 트레이딩 - 파이썬 알고리즘 문제(3)
(1). 개발자 면접 트레이닝 - 두 문자열이 구성 요소가 같은지 확인(Anagram)하는 알고리즘
① 파이썬의 join, sorted, strip 함수를 활용
② 소문자로 변환 후 정렬이 핵심
③ 예를들어 elivs 는 = lives , basic = isabc 와 같이 구성요소가 같다.
(2). 소스 코드
PYTHON
#anagram.py
import unittest
#두 문자열을 입력받아 정렬 한 후 같은 지 비교 (문자로 서로 다른 단어 만들어 내기)
def anagram(str1, str2):
if ''.join(sorted(str1.lower())).strip() == ''.join(sorted(str2.lower())).strip(): #대문자 정렬도 가능 upper()
return True
else:
return False
class anagramTest(unittest.TestCase):
def test(self):
self.assertTrue(anagram("elvis", "livez"))
print(anagram("elvis", "livez"))
self.assertTrue(anagram("basic", "is abd"))
print(anagram("basic", "is abd"))
unittest.main()
(3). 소스 코드 분석
① 10 라인 : 먼저 입력받은 문자열을 소문자로 변환하여 변환 한 후 Join 함수로 변환 후에 strip으로 공백 제거
② 10 라인 : 두 문자열을 비교 후 구성 요소가 같으면 True 아니면 False
③ 19 라인 : assertTrue 단위 테스트 함수를 사용하여 실행 결과가 True가 나오는지 확인
④ 20 라인 : Print 함수로 출력
파이썬(Python) 으로 작성한 후 같은 코드를 Java 변환하여 작성해보면 더욱 도움이 될 것이다.
(4). 실행결과1 - 단위테스트 정상 출력(구성 요소가 같은 경우)
(5). 실행결과2 - 단위테스트 정상 출력(구성 요소가 다른 경우)
'언어 > Python' 카테고리의 다른 글
파이썬 알고리즘 - 문자열을 입력받아 중복단어 압축하기 (0) | 2017.08.20 |
---|---|
파이썬 알고리즘 - 공백을 %20으로 변환하기 (0) | 2017.08.19 |
파이썬 알고리즘 - 문자열 입력받아 역(Reverse)으로 출력 (0) | 2017.08.16 |
파이썬 알고리즘 - 문자열에 포함된 문자들이 전부 유일한지 검사 (0) | 2017.08.14 |
파이썬(Python) 소개 및 설치하기 (1) | 2017.02.19 |