본문 바로가기
알고리즘

알고리즘 4일차

by useSword 2024. 3. 8.

<sorted 우선순위>

'', !, @, A, a



<문자열 관련 메소드>


find()

설명: 문자열에서 특정 부분 문자열이 처음 나타나는 위치를 찾습니다. 찾는 문자열이 없는 경우 -1을 반환합니다.
사용법: text.find(sub[, start[, end]])


index()

설명: find()와 유사하지만, 찾는 문자열이 없을 경우 ValueError를 발생시킵니다.
사용법: text.index(sub[, start[, end]])

 

count()

설명: 문자열 내에서 특정 부분 문자열이 등장하는 횟수를 반환합니다.
사용법: text.count(sub[, start[, end]])

 


replace()

설명: 문자열 내의 특정 부분 문자열을 다른 문자열로 대체합니다.
사용법: text.replace(old, new[, count])
count를 지정하면, 대체할 최대 횟수를 제한할 수 있습니다.


split()

설명: 문자열을 특정 구분자로 분리하여 리스트로 반환합니다. 구분자를 지정하지 않으면 공백(스페이스, 탭, 개행)을 기준으로 분리합니다.
사용법: text.split(sep=None, maxsplit=-1)


join()

설명: 문자열 리스트의 요소들을 특정 문자열로 연결합니다. 이 메소드는 문자열 객체의 메소드로, 리스트 등의 반복 가능한(iterable) 객체에 사용됩니다.
사용법: sep.join(iterable)

 

 

<재귀함수>

자기자신을 호출하는 함수

 

왜?
코드를 간결하게
stack을 사용함으로 DFS같은 깊이 우선 탐색에 이용

주의!
호출이 많아지면 스택 메모리에 부담이 될 수 있음
stack overflow 위험. 반드시 탈출 조건을 만들어줘야함.

 

<재귀 함수를 사용하면서 느낌점>

아래의 간단한 코드를 통해 자기자신을 호출하는 형태를 익히자.

def Square(n, m):
    if m == 0:
        return 1
    return n * Square(n, m-1)

 

위의 그림을 보고 재귀함수가 스택형식으로 return값을 모으다가 점차 함수를 내보내는 걸 이해해야한다.
보면서 모으고 모으고 한번에 다 리턴떄리는 모습이 뿌요뿌요가 생각났음.

 

 

<문제풀이>

회문같은 문자형을 비교할때 문자형을 len()으로 갯수를 세고 절반으로 나누어 아래처럼 비교했었는데 비효율적이고 여러번 시도했지만 에러가 잦고 생각보다 좋은 코드는 아닌 것 같다.

[1:len(a)/2] == [- len(a)/2 :]

 

그래서 아래와 같이 비교 했는데 훨신 편하고 잘 사용하고 있다.

 if text == text[::-1]:

 

<과제 (개인)>

버블정렬

삽입정렬

선택정렬

병합정렬 

퀵정렬

 

<해야할 일>

1. 버블정렬, 삽입정렬, 선택정렬,병합정렬 함수로 만들어보기. 인풋(숫자로만 된 리스트) 아웃풋(정렬이 된 리스트가 리턴)

2. 파이썬 심화 과정을 다시 한번 보면 더 잘 활용할 것 같다.

3. 1일차 심화문제들 도전하기

'알고리즘' 카테고리의 다른 글

알고리즘 6일차  (0) 2024.03.13
Queue,DEQ,원형큐  (0) 2024.03.12
병합정렬  (0) 2024.03.11
삽입정렬  (0) 2024.03.11
버블정렬  (0) 2024.03.11