컴퓨터 사이언스 (CS)/자료구조 및 알고리즘

06. 프로그래밍과 문제해결_내장 메소드

한소희DE 2021. 6. 3. 23:39
파이썬이랑 알고리즘, 자료구조는 생산을 위한 도구라고 보면 된다.

자료구조와 알고리즘 챕터에서는, 무엇보다 복잡한 문제를 작은 문제로 분할하면서 해결한다라는 아이디어를 갖고 있어야 한다.

 

문제를 보았을 때, 문제가 어떤 패턴을 갖고 있는지 생각해본 뒤, 작은 문제로 분할해 문제를 풀어보는 과정을 반복해 수행한다고 보면 된다.

 

자료구조란, 우리가 데이터를 사용함에 있어서, 어떻게 데이터를 저장하고 사용할 지 정의하는 과정이다. 이는 데이터의 효율적인 접근을 목적으로 한다. 데이터를 쉽게 찾기 위해서는 특정 구조로 데이터를 저장해주어야 한다.

 

알고리즘이란, 문제를 해결하기 위한 단계적 절차를 정의한 것이다.

 

따라서, 우리는 문제해결능력과 컴퓨팅 사고능력(수학 개념을 컴퓨터로 잘 옮겨내는 능력)을 키워 자료구조를 잘 짜고, 그 구조에 맞는 알고리즘을 잘 수행해보아야 할 것이다!

 



   

 

올해 4월 초부터, 나는 소규모 알고리즘 스터디를 주최해 진행하고 있다.

(혼자 공부하는 것보다 여러 명이서 공부하는 걸 즐기는 사람...) 이 스터디 내용과 진행 방법 및 과정 등은 추후 포스팅을 하겠다.

 

여튼, 알고리즘을 매일 풀면서 느끼는 점은 재미는 있는데 시간이 참 오래걸린다는 것. 그럼에도 불행 중 다행인 것은, 점차 풀이 속도가 붙는다는 것이다. 💨

컴퓨팅적 사고능력이 키워지기 때문인 것인지, 일정 패턴 안에서 문제를 풀다보니 익숙해진 것인지는 몰라도, 기분은 좋다.

 

그리고 또 한가지, 풀이를 하면서 느낀 점이 있다. 바로, 파이썬 내장함수는 생각보다 많다는 것이다.

그리고 이것에 아직 내가 익숙치 않다는 것이다. 크흡. 따라서 내장함수를 다양하게 활용해보는 연습이 필요하다는 결론을 내렸다.

 

그리하여 이번 포스팅에서는, 몇 가지 자주 사용되는 내장함수를 정리해보는 시간을 가져볼 것이다.

 

 

 

       

 

목차

rjust(width, [fillchar])

zfill(width)

Split

Map

 

 


 

 

01. rjust(width, [fillchar])

rjust는 원하는 문자를 따로 지정하고, 다른 문자열로 앞 부분을 채워줄 수 있는 메소드다.

아래 코드를 함께 보자.

 

# 답: "005" 
print("5".rjust(3,"0") 

# 답: "5000" 
print("5000".rjust(4,"a")

 

첫 번째 줄은, 5라는 str의 len을 3으로 만들고, 만약 3에 미치지 못한다면, str 앞에 0으로 갯수를 채워준다는 의미다.
두 번째 줄도 마찬가지인데, 2번째 줄의 경우 이미 4자리 수이므로, str 앞에 a가 들어가지 않고, 원 str 값 그대로 출력된다.

 


 

02. zfill(width)

zfill은 rjust와 개념은 동일하나, 채워지는 str값이 오직 "0"(숫자가 아닌 str)이다.

아래 코드를 살펴보자.

 

 

# 정답: "00123" 
print("123".zfill(5))

str "123"의 len은 3이므로, len을 5로 만들기 위해서는 2개가 더 필요하다.

이때 zfill을 통해, 제시된 str 앞에 필요한 갯수(2)만큼 "0"을 채워준다.

 

 


 

03. Split

split은 문자열을 다룰 때 주로 사용된다.

문자열을 자르기도, 원하는 만큼 출력하기도, 리스트로 반환하기도, 대체하기도 가능하다.

이는 아래의 설명을 통해 이해해보도록 하자.

(다른 것들은 많이 사용했는데, startswith와 endswith는 처음 보는 것 같다.. 문자 더미를 분리할 때 활용하면 좋을 것 같다!)

 

# 테스트 문자열을 지정 
string_ = "Hello, I am Jack and I am a data scientist" 

# 문자열의 1번 인덱스 출력(e) 
print(string_[1]) 

# 띄어쓰기를 중심으로 str을 나눠 리스트로 반환 
string_list = string_.split(" ") 

# 해당 str의 시작이 'Hello' 면 True 
print(string_.startswith('Hello')) 

# 해당 str의 끝이 'scientist' 면 True 
print(string_.endswith('scientist')) 

# 해당 str의 끝이 'tist' 면 True 
print(string_.endswith('tist')) 

# 해당 str에서 "Jack"라는 str을 "John"으로 반환 
print(string_.replace("Jack", "John"))   


 

04. Map

Map은 파이썬의 내장함수로, 리스트의 요소를 지정된 함수로 처리해주는 함수다. 이는 이전 포스팅에 잘 정리를 해 두었고, Map 함수에서 발생할 수 있는 흔한 (그러나 알고 보면 허무한) 에러해결 방법도 정리해두었다.

포스팅 링크는 아래와 같다.

 

 

 

05. map 에러 해결 방법

목차 Map Map 에러발생 01. Map Map은 파이썬의 내장함수로, 리스트의 요소를 지정된 함수로 처리해주는 함수다. 이는 매우 자주 사용되며, 예시는 아래와 같다. 그런데, 사실 내가 map을 설명하는 이

eng-sohee.tistory.com