프로그래밍 69

[leetcode][Python]234. Palindrome Linked List(4일간의 팰린드롬 연결리스트 해결기🤪)

파이썬 알고리즘 인터뷰 8장이 시작되고 연결리스트 문제를 풀기시작했다. 첫문제인 만큼 어려운 문제는 아닐것이라 생각했는데 이게 왠걸 뭔말인지 잘 이해가 안갔다. 계속 책을 보면서 이해하려고 해봐도 내가 생각하는 이게 맞는건지 잘 이해가가지 않아 https://github.com/onlybooks/algorithm-interview/issues/147 팰린드롬 연결리스트 질문 · Issue #147 · onlybooks/algorithm-interview 212p 에 slow = 2->3이라고 가정해보자. 여기서 slow는 연결리스트이며, slow.next는 3이라는 의미이다. rev = 2->3이 되고, rev.next=1, 이 되어서 rev = 2->1이 된다고 적혀있습니다 slow는 연결리스트로 sl..

[리트코드][Python]125-valid Palindrome

https://leetcode.com/problems/valid-palindrome/ Valid Palindrome - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 파이썬 알고리즘 인터뷰 책을 보고 풀이 대소문자를 구분하지 않고, 영문자와 소문자만을 대상으로 하여 팰린드롬인지 확인하라 정규표현식을 사용해서 풀이하였다. def isPalindrome(self, s: str) -> bool: words = re.sub(r'[^A-Za-z0-9]','',s).low..

(2)파이썬알고리즘인터뷰 - leetCode:[819]Most Common Word

https://leetcode.com/problems/most-common-word/ Most Common Word - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 📌문제 설명 str으로 입력을 받아 그 단어 중 banned 리스트에 없는 단어중 가장 많은 빈도의 단어를 반환하는 문제! def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: 리트코드는 이렇게 함수형태로 주어진다. 이에따라서 리스..

(1)파이썬알고리즘인터뷰 - 빅오와 자료형

빅오 : 점근적 실행시간을 표기할 때 함수의 상한을 설명하는 수학적 표기 방법 점근적 실행시간이란 입력값이 무한대로 갈 때 함수의 실행시간의 추이를 의미한다 . 점근적 실행시간을 시간 복잡도라고 말 할 수 있는데 시간복잡도는 알고리즘을 수행하는데 걸리는 계산 복잡도로 이를 표기하는 대표적인 방법이 빅오다! 빅오로 시간복잡도를 표현할 때 상수항은 무시하고 최고차항만을 고려한다. => 시간복잡도를 표현하는 빅오! 자료형 1. 숫자 C와 같은 여느 언어들과 달리 파이썬에서는 숫자 정수형을 표현하는 자료형은 int 뿐이다. 왜 long이 없을까? -> 있었는데 사라짐 2. 시퀀스 시퀀스는 '수열'과 같은 의미 str은 문자열을 이루는 자료형 list는 다양한 값들을 배열 형태의 순어 있는 나열로 구성하는 자료형..

(6)처음시작하는파이썬_[6장 객체와 클래스]

클래스는 박스를 만드는 틀, 객체는 플라스틱 박스로 비유할 수 있다. 객체는 어제쓰나?? 비슷한 행동(메서드)을 하지만 내부상태(속성)이 다른 개별 인스턴스가 필요할 때, 객체는 유용하다. string은 'cat', 'duck'과 같은 문자열 객체를 만들도록 내장되어있는 클래이다. 이러한 커스텀 객체들을 생성하기 위해 class 키워드를 이용해 클래스를 정의한다. class person() : pass someone = person() person()은 person 클래스로부터 객체를 생성한 후 someone변수에 이 객체를 할당한다. 파이썬 객체 초기화 메서드 __init__이 있다. 이는 클래스의 정의로부터 객체를 초기화한다. self는 객체 자신을 가리킨다. class person() : def _..

(5)처음시작하는파이썬_[5장 모듈,패키지,프로그램]

모듈의 이용 def get_description() : from random import choice possible = ['rain','snow','sunny','fog','who knows'] return choice(possible) [메인 프로그램] import report description = report.get_description() print("Today is weather : ", description) python.py를 실행시키면 report 모듈을 찾아 get_description함수를 실행한다. report 모듈에서 get_description함수는 파이썬 표준 random 모듈로부터 choice함수를 임포트했다. 다른 이름으로 모듈을 임포트하고 싶다면 alias를 이용한다. ..

(4)처음시작하는 파이썬_[4장파이크러스트:코드구조]

라인 유지하기 : \ print('fjslfjsf\ fslljf') for문에서 튜플이나 리스트는 한 번에 한 항목을 순회하고, 문자열은 한 번에 한 문자를 순회한다. word = 'cat' for i in word : print(i) 딕셔너리의 순회는 키를 반환한다. 값을 하고 싶다면 values()를 이용, 키와 값 모두 반환하려면 items()를 이용한다. break문이 발생하지않으면 else : 가 실행된다. cheeses = ['mocha'] for cheese in cheeses : print('This shop has some lovely', cheese) break else : # break가 호출되지않으면 print('This is not much of a cheese shop') zip..

(3)처음시작하는 파이썬_[3-3튜플,셋,딕셔너리:3-8]

튜플 -> 불변, 상수의 리스트라고 할 수 있다. 요소가 하나 있을 때는 마지막 요소의 뒤에도 ','를 붙인다. ()를 이용한다. 튜플을 출력할 때는 (괄호)( )를 포함하지만 정의할 때는 필요없다. (있어도 좋음) 한번에 여러 변수에 할당할 수 있다. 이를 튜플 언패킹이라고 한다. marx_tuple = ('Groucho','Chico','Harpo') a,b,c = marx_tuple print(a) print(b) print(c) 딕셔너리 {}를 이용한다. 값에 사용하는 고유한 키를 지정한다. 딕셔너리의 키는 반드시 유일해야한다 만약 같은 키를 두 번 이상 사용하면 마지막 값이 승리한다. update() : 딕셔너리 결합 del : 키를 이용해 항목 삭제 python = { 'Chapman' : '..

(2)처음시작하는파이썬_[3-1:3-2]

파이썬에는 두 가지 다른 시퀀스 구조가 있다. 튜플과 리스트이다. 문자열과는 달리 각 요소는 어떤 객체도 될 수 있다. 튜플은 불변하고(항목을 할당하고 바꿀 수 없다.) 리스트는 변경 가능하다(항목을 할당하고 자유롭게 수정, 삭제가 가능하다) 3-2 리스트 콤마(,)로 구분하고, 대괄호([])로 둘러싸여있다. 다른 타입의 요소를 포함할 수 있다. 생성 -> [], list() list() : 다른 데이터 타입을 리스트로 변환하기 리스트는 offset을 이용해 항목 수와 항목 내용을 바꿀 수 있다. marxes = ['Groucho', 'Chico', 'Harpo'] marxes[2] = 'Wanda' print(marxes) append() : 리스트의 끝에 항목 추가하기 extend() 또는 '+=' ..