아자아자 화이팅이닷 !

230722 오프라인 스터디 & 파이썬 코딩 공부 본문

TIL

230722 오프라인 스터디 & 파이썬 코딩 공부

유초23 2023. 7. 23. 14:20
728x90

내 생에 첫 블로그다 ..!

처음 쓰는거라 어색하겠지만 쓰다보면 익숙해지겠징 ..

해보자고 ~!~~

 

원래는 어제 썼어야했지만 오늘 쓰는 블로그 ,, 넘나 피곤한걸 어떡해 ~!~

어제 처음 오프라인 스터디에 참여했다 !

다들 열정 넘치셔서 나도 동기부여가 많이 되었당 열심히 해야쥐 ,,

 

일단 나는 파이썬에 대한 기초가 부족하지만 냅다 프로그래머스 문제를 풀었다 ㅋㅠ

처음에는 쉬운문제부터 풀어야겠다는 생각도 없이 그냥 위에 떠있는것부터 풀었더니 시간이 꽤 걸렸다 ㅠ

 

일단 첫 문제는

문자열 str이 주어질 때, str을 출력하는 코드를 작성하는것이었다.

이때, 1 ≤ str의 길이 ≤ 1,000,000이고, str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어진다는 제한사항이 있었다.

 

나는

str = input()
if len(str) >= 1 and len(str) <= 1000000:
    print(str)

이라고 답을 입력했는데, 공백이 없다는 조건인 str != "" 도 주어져야 완벽한 답이었다.


그 다음 문제에서는

4 5

를 입력했을 때 출력값이

a = 4
b = 5

처럼 나와야한다는것이었는데, 여기에서는 map함수와 split, strip함수를 쓰는 방법이 있었다.

 

map() 함수는 여러 개의 데이터를 받아서 각각의 요소에 함수를 적용한 결과를 반환하는 내장 함수이다.

리스트, 튜플 등의 반복 가능한(iterable) 객체를 입력으로 받을 수 있다.

 

map(function, iterable)
  • function: 각 요소에 적용할 함수
  • iterable: 함수를 적용할 데이터 집합

map() 함수는 iterable의 각 요소에 대해 function 함수를 적용한 결과를 새로운 iterator로 반환한다. 이때, function 함수는 각 요소를 인자로 받아서 처리하며, 함수의 반환값이 새로운 iterator의 각 요소가 된다.

 

map(function, iterable1, iterable2, ...)
  • function: 각 요소에 적용할 함수
  • iterable1, iterable2, ...: 함수를 적용할 데이터 집합

여러 개의 반복 가능한 객체를 입력으로 받는 map() 함수는 입력된 각 객체의 요소를 차례대로 하나씩 가져와서 function 함수에 인자로 전달한다.

 

[EX1]

def square(x):
    return x**2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))  #답 :  [1, 4, 9, 16, 25] 

 

[EX2]

def add(x, y):
    return x + y

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]
added_numbers = map(add, numbers1, numbers2)
print(list(added_numbers))  #답 : [11, 22, 33, 44, 55]

 

그리고 map() 함수는 가장 짧은 길이를 가진 iterable 객체의 길이만큼 function 함수를 반복적으로 적용한다고 한다.


strip() 함수는 파이썬 라이브러리에서 사용할 수 있는 내장 함수의 일부로써, 원래 문자열의 시작과 끝에서 주어진 문자를 제거한다. 기본적으로 strip() 함수는 문자열의 시작과 끝에서 공백을 제거한 후 반환한다. 만약, 괄호 안에 특정 값을 넣을 경우에는 해당하는 문자열을 제거할 수 있다.

strip 함수에는 rstrip, lstrip, strip으로 총 3가지가 있다. rstrip은 오른쪽에 있는 것만(공백 or 특정 문자) 제거하고, lstrip은 왼쪽에 있는 것만 제거하고, strip은 양쪽 다 제거한다.

 

# 공백을 제거하는 경우
string = "     hello     "
string.strip()
 
>>> 'hello'
 
 
# 특정 문자열을 제거하는 경우
string = "     hello     "
string.strip('e')
 
>>> 'hllo'
# 공백을 제거하는 경우
string = "     hello     "
string.lstrip()
 
>>> 'hello     '
 
 
# 특정 문자열을 제거하는 경우
string = "     mmmhellommm     "
string.lstrip('m')
 
>>> 'hellommm'
# 공백을 제거하는 경우
string = "     hello     "
string.rstrip()
 
>>> '     hello'
 
 
# 특정 문자열을 제거하는 경우
string = "     mmmhellommm     "
string.rstrip('m')
 
>>> 'mmmhello'

split()함수는 문자열을 나눠서 리스트로 만들 때 가장 많이 사용하는 함수이다. split() 괄호 안에 아무것도 넣지 않으면 공백(띄어쓰기, 탭 등)을 기준으로 문자열을 나누고, 만약 특정 문자가 들어가 있다면 해당 문자를 기준으로 나눈다. 나누어진 값은 리스트의 요소로 저장된다.

 

  • 문자열.split()
  • 문자열.split('구분자')
  • 문자열.split('구분자', 분할 횟수)
  • 문자열.split(seq='구분자', maxsplit=분할 횟수)

이런식으로 분류시킬 수 있다.

str = 'a b c d e f g'
result = str.split()
print(result)

>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g']
str = 'a,b,c,d,e,f,g'
result = str.split(',')
print(result)

>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g']
str = 'a,b,c,d,e,f,g'
res = str.split(',' , 3)
print(res)

>>> ['a', 'b', 'c', 'd,e,f,g']
str = 'a,b,c,d,e,f,g'
result = str.split(sep=',' , maxsplit=3)
print(result)

>>> ['a', 'b', 'c', 'd,e,f,g']

이렇게 찾아서 공부를 한다음, 쉬운문제들을 풀기 시작했다.

대문자로 바꾸는 upper()함수와 소문자로 바꾸는 lower()함수도 다시 상기시키고 ~

 

부분문자열 찾기 할때는 find()함수를 썼었는데, 더 쉬운 방법이 있었다.

문자열 a와 b가 있을때, b가 a의 부분문자열이라면 1을, 아니라면 0을 return하는 함수를 작성하라는 조건이 주어지면,

따로 if else로 1과 0을 return하지 않아도

def solution(a,b):
    return int(b in a)

이렇게 해도 답이 나왔다.


각 자리수 합을 찾는 

number result
"123456789" 45
"1000000" 1

이런 문제에서는 for문을 사용해도 되지만

sum(map(int, str(number)))을 사용하면 더 간단히 문제를 풀 수 있었다.


*참고 (배열에서)

arr = [49, 13]
print(sum(arr))

>>> 62

<마지막으로 나를 위한 메모 !>

파이썬 300제에서 다시 보면 좋을 문제(~45) : 9 , 23 , 24 , 27 , 28 , 29 , 30 , 34 , 35 , 36 , 37 , 38 , 45


+ replace()함수는

string = 'abcd'
string.replace('b', 'B')
print(string)

 >>> abcd
 
string = 'abcd'
string = string.replace('b', 'B')
print(string)

 >>> aBcd

+ endswith()함수 쓸때, 두개 이상의 조건이면 튜플로 묶어서 or로 적용된다 ! 그래서 하나만 True여도 답은 True가 나온다 !
728x90

'TIL' 카테고리의 다른 글

230727 프로그래머스 문제풀기  (0) 2023.07.27
230726 파이썬 공부  (0) 2023.07.27
230725 파이썬 공부  (0) 2023.07.25
230724 파이썬 코딩 공부  (0) 2023.07.25
230723 파이썬 코딩 공부  (0) 2023.07.23