본문 바로가기

728x90

Algorithm

(55)
[Leet Code] longest-palindromic-substring Given a string s, return the longest palindromic substring in s. Solve 입력값이 다음과 같을 때 "babad" 출력 예시는 다음과 같다. "bab" 주어진 문자열에서 가장 긴 팰린드롬의 부분 문자열을 출력하는 문제이다. 필자는 특출 난 알고리즘 기법을 아는 것이 아니기 때문에 무지성으로 정말 모든 부분 문자열을 구한 후 이를 List에 저장하고 가장 긴 문자열을 뽑아내는 방식으로 풀었다. # 필자가 푼 방식 class Solution: def longestPalindrome(self, s: str) -> str: length = len(s) result = [] if s == s[::-1]: return s for x in range(length):..
[Leet Code] Group Anagrams Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once. Anagram 문자의 위치를 바꿨을 때 다른 뜻을 가진 단어로 바꾸는 것을 의미한다. Solve 입력값으로 문자열을 담은 배열이 주어진다. Input: strs = ["eat","tea","tan","ate","nat","bat"] 입력값 중에 Anagram이 ..
[LeetCode] Palindrome 고찰하기 Given a strings, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. 간단한 문제라 그냥 풀었지만 문득 내가 풀었던 방법 외에 다른 방법은 어떤 식이 있는지에 대해 궁금함이 생겼다. 먼저 내가 썼던 코드이다. def isPalindrome(self, s: str) -> bool: remove_specialized = "".join([x.lower() for x in s if x.isalnum()]) return remove_specialized == remove_specialized[::-1] 매개변수 `s`로 전달된 값을 반복문을 돌리면서 isalnum()을 이용하여 특수문자..
[Programmers] 1주차_부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. Solution 처음 작성한 코드는 아래와 같다. 의식의 흐름대로 적긴 했는데 def solution(price, money, count): total_price = sum([x for x in range(price, count * p..
[Programmers] 2021 카카오 채용연계형 인턴십숫자 > 문자열과 영단어도움말 Description 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. Notes 알고리즘 문제는 문제를 이해하는 과정도 힘들다. 어찌어찌 이해를 하고 보니 문제 풀이 계획을 다음과 같이 세웠다. 1. number_di..
[Leet Code] Reorder Data in Log Files Leet Code 937번 로그파일 재정렬이다. 단순히 문제를 읽었을 때 파악하지 못한 개념이 있었다. 문제를 읽다 보면 하단의 2번 항목에 "lexicographically"라는 단어가 나온다. 찾아보니 "사전식 순서"라는 뜻이라고 해석된다. 즉 문제에서 요구하는 바가 정렬하는 내용이 같을 경우 식별자를 통해 사전식 순서로 정렬을 하라고 요구하는 것이다. 그런데 사전식 순서로 정렬을 하는 것이 어떤 의미일까? 검색 결과 sort()에 'key' 라는 키워드 인자를 설정하고 정렬 기준을 문제에서 요구하는 바와 같이 잡으면 된다. 아래는 풀이 코드이다. class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: letter_log, d..
LeetCode를 통해서 본 Python의 문자열 뒤짚기 LeetCode의 344번 문제 "Reverse String"이다. 제한 조건에는 문자열을 뒤집기 위한 다른 공간을 할당할 필요가 없다고 나와있다. 문제를 풀기 위해 2가지 방법을 사용했다. 하나는 slicing을 이용하는 방법이고 다른 하나는 reverse() 메서드를 이용하는 방법이다. 먼저 reverse() 메서드를 이용하는 경우를 보자 테스트도 통과하고 코드 제출도 통과다 그렇다면 slicing을 사용한 경우는 어떨까? 테스트를 통과하지 못한다. 테스트를 통과하지 못하니 당연히 제출해도 별 의미가 없다. 그래서 이런 차이가 발생하는 이유가 뭘까? 여기서 www.geeksforgeeks.org/python-reversed-vs-1-which-one-is-faster/ 답을 찾을 수 있었다. Pyth..

728x90
반응형