목록알고리즘 (12)
엔지니어 블로그

풀이주어진 배열 nums 내 각각의 원소들의 차가 k 만큼인 pair의 수를 구하면 된다.int로 초기화 된 dict를 선언한 후 배열 내 값에서 k를 뺴거나 더한 값을 각각 tmp,tmp2에 저장한다.이후 선언해둔 dict에 차가 k 인 pair를 저장하여 그 수를 확인할 수 있게 된다. 코드class Solution: def countKDifference(self, nums: List[int], k: int) -> int: dict = defaultdict(int) cnt = 0 for num in nums: tmp, tmp2 = num+k, num-k if tmp in dict: cnt +=..

풀이본 문제는 Hash를 활용해서 풀었다.dict를 선언한 후 for문을 돌면서 문자열을 key로, count를 value로 저장하게끔 하여 각 문자열이 몇번 나오는지 체크할 수 있도록 풀었다. 코드class Solution: def areOccurrencesEqual(self, s: str) -> bool: dict = {} for i in s: if i in dict: dict[i] += 1 else: dict[i] = 1 return True if len(set(dict.values())) == 1 else False

풀이Easy 난이도이기 때문에 크게 어렵지 않게 문제를 풀 수 있었다.주어진 조건에 맞게 if문을 사용했고, 재귀함수를 사용했다.맨 첫 글자와 마지막 글자를 비교한 후 나머지 글자만 남기고 잘라내어 비교 대상의 크기를 줄여 나가는 방식이다.코드class Solution: def isPalindrome(self, x: int) -> bool: x = str(x) if len(x)

풀이days와 일자별 pass 가격이 배열로 주어진다.이때 주어진 days를 모두 여행할 수 있는 최소 pass 가격을 구하면 되는 문제다.DP 방식으로 풀이했다.(사실 DP인걸 알고 시작했다..)1.days에 있는 가장 큰 수 크기 +1 만큼의 배열을 생성한다.2.배열을 돌면서 days 배열에 있는 날짜의 값에 적절한 pass 가격을 넣어주고, 없는 날짜라면 이전 날짜의 값을 저장한 후 넘어간다.pass의 가격은 해당 day에서 각각 1,7,30일 전에 가장 쓴 돈이 적은 값을 사용하고, 그 값으로 배열을 업데이트 한다.코드class Solution: def mincostTickets(self, days: List[int], costs: List[int]) -> int: max_day..