전체 글 50

(간단한 코드)리트코드 125. Valid Palindrome

우선 Palindrome의 뜻은 다음과 같다. "영문을 전부 소문자로 바꾸고, 특수기호와 공백을 제거 한 후에 나온 결과물이, 앞뒤 대칭이면 palindrome이다" 여기서 주의 해야 할 점은, 저 문자열에는 "숫자"도 포함이라는 것이다.우선 공백과 특수기호들을 없애줘야 하는데, 굳이 특별한 함수를 쓸 필요없이 for문을 사용하면 간단하다.ans = ''for char in s: if char.isaplha(): #char이 문자인지 확인 ans += char.lower() #소문자로 바꿔서 ans에 더하기 elif char.isdigit(): #char이 숫자인지 확인 ans += char여기서 ans는 알고리즘에서 자주 사용되는 answer의 약어이고, char는 charac..

(간단한 코드)리트코드 169. Majority Element

리스트 안에 가장 많이 있는 숫자를 출력하면 되는 문제이다. 그리고 가장 많이 있는 숫자는 전체의 반 이상을 차지하고 있다. 처음에는 이렇게 접근을 했다. 결국은 딕셔너리로 찾으면 되지 않을까?class Solution: def majorityElement(self, nums: List[int]) -> int: h = defaultdict(int) for num in nums: h[str(num)] += 1 return int(max(h,key=h.get)) 여기 나오는 defaultdict(int)은 딕셔너리를 만들 때 if문을 덜 쓰게 도와주는 녀석이다 안에 int라고 타입을 지정해줘야 하고, 실제로는 from collect..

(간단한 코드)리트코드 56. Merge Intervals

블로그를 찾아본다는 것은 이미 이 문제의 뜻을 알고 있다고 생각한다. 우리는 이 문제에서 주의해야 할 점이, "문제에서 리스트 안의 원소가 순서대로 나열되어 있다는 말이 없다"는 것이다. 다른 말로는 순서가 뒤죽박죽일 수 있으니, 우선 "정렬"을 해주는게 최우선이다.1.sort와 lambda를 활용한 리스트 순서 정렬하기intervals.sort(key = lambda interval : interval[0]) 이게 가장 먼저 해야 하는 코드다.  해석은 다음과 같다: 우선 sort(key = )라고 하면, "무엇을 기준으로 순서를 나열 할 것"인지 정하는 부분이다. lambda interval : interval[0]에서 lambda는 함수를 짧게 만든 것이라는 것을 어디선가 들었을 것이라고 생각한다...