알고리즘 공부/파이썬 알고리즘 인터뷰 15

파이썬 알고리즘 인터뷰를 통한 팁

1. 파이썬의 변수명 네이밍 컨벤션은 스네이크 케이스를 따른다. Ex.) snake_case : int = 1 2. 타입 힌트, 리턴값 등 명시적으로 선언 시 가독성이 좋아지고 버그 발생 확률을 줄일 수 있다. 또한 mypy를 사용해서 타입 힌트에 오류가 없는지 확인 가능하다. Ex.) def fn(a : int) -> bool: $pip install mypy를 통해 설치 가능 3. 리스트 컴프리헨션 Ex.) 홀수인 경우 2를 곱해 출력하는 리스트 컴프리헨션 [n * 2 for n in range(1, 10 + 1) if n % 2 == 1] 4. 제네레이터 루프의 반복 동작을 제어할 수 있는 루틴의 형태 yield 구문 사용 시 제네레이터 리턴 생성해두고 필요할 때 언제든지 숫자를 만들어 낼 수 있음..

04 가장 흔한 단어(Most common words)

문제: 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉼표) 또한 무시한다. 예제: Input: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"] Output: "ball" Explanation: "hit" occurs 3 times, but it is a banned word. "ball" occurs twice (and no other word does), so it is the most frequent non-banned word in the paragraph. Note that words in the paragraph are not..

03 로그 파일 재 정렬(reorder data in log files)

문제: 로그를 재정렬하라 . 기준은 다음과 같다 1. 로그의 가장 앞 부분은 식별자 2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다. 4. 숫자 로그는 입력 순서대로 한다. 예제: Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"] Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"] Explanation: The letter-log contents are all different, so their orde..

02 문자열 뒤집기(Reverse string)

문제 : 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라. 예제: Input: s = ["h","e","l","l","o"] Output: ["o","l","l","e","h"] Input: s = ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"] 솔루션: 투 포인터를 이용한 스왑 💡 투 포인터? 단어 그대로 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식 def reverseString(self, s : List[str]) -> None: left, right = 0 , len(s) - 1 while left < right: s[left], s[right] = s[right], s[left..

01 유효한 팰린드롬 (Valid Palindrome)

문제 : 주어진 문자열이 팰린드롬인지 확인, 대소문자 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 예제: Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome. Input: s = "race a car" Output: false Explanation: "raceacar" is not a palindrome. 💡 palindrome(팰린드롬)? 앞 뒤가 똑같은 문장으로, 뒤집어도 같은 말이 되는 단어 또는 문장 솔루션: 리스트로 변환 # 리스트 활용 시간 복잡도 : O(n²) def isPalindrome(self, s:str) -> bool: strs = ..