문자열을 다루는 법
----------------------------
1. 특정 문자의 제거
(https://school.programmers.co.kr/learn/courses/30/lessons/120826)
- 내가 사용한 방법
C언어 맹쿠로 문자열을 나타내기 위해 list(my_string)을 한 후 for문을 돌려서 새 리스트를 append로 만든 후
' '.join(<리스트>) 하기.
-> 파이썬의 문자열을 다루는 방법에 대해 익숙해질 필요가 있다.
def solution(my_string, letter):
answer = []
str_list = list(my_string)
for letter_list in str_list:
if letter_list != letter:
answer.append(letter_list)
return ''.join(answer)
- 간단한 방법
def solution(my_string, letter):
return my_string.replace(letter, '')
- 리스트를 사용하지 않고 문자열만을 활용하는 방법
def solution(my_string, letter):
answer = ''
for string in my_string:
if string != letter:
answer += string
return answer
----
2. 문자열 뒤집기
(https://school.programmers.co.kr/learn/courses/30/lessons/120822)
- 내가 사용한 방법
def solution(my_string):
list_str = list(my_string)
new_list_str = list_str[::-1]
answer = ''
for i in new_list_str:
answer = answer + f'{i}'
return answer
리스트로 만든 후, step size를 -1로 설정하여 새 원소들을 answer 문자열에 붙이기
-> 굳이 리스트를 사용하지 않아도 된다.
- 간단한 방법
def solution(my_string):
return my_string[::-1]
문자열에서 바로 step size를 설정해버리기
---
3. 내장함수의 활용
문자열 뒤집기
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
문자열에서 특정 단어 제거하기
def solution(my_string, letter):
return my_string.replace(letter, '')
------
4. combination 함수
from itertools import combinations
def solution(dots):
a = []
for (x1,y1),(x2,y2) in combinations(dots,2):
a.append((y2-y1,x2-x1))
for (x1,y1),(x2,y2) in combinations(a,2):
if x1*y2==x2*y1:
return 1
return 0
# 문자열과 리스트의 변환
문자열->리스트 시에는 list(input_string)으로
리스트->문자열 시에는 "".join(input_list)으로.
# split 함수
문자열을 쪼갤때 쓰는 함수.
'h e llo'.split(' ') 혹은 'h e llo.split(sep=' ')을 하면
['h', 'e', 'llo']을 얻을 수 있다.
sep 파라미터 말고도 maxsplit 파라미터도 존재한다. 디폴트 -1값에, split 횟수를 제한하고 싶을 때 값을 넣어준다.
# 리스트 다루기
del input_list [ index ]를 하면 해당 인덱스의 원소를 제거한다.
하면, 2번 인덱스의 원소가 사라지고 [1,2,4]가 반환된다.
또한 문자열처럼, 리스트도 [1,2] + [3,4]를 통해 [1,2,3,4]를 만들 수 있다.
list_1.extend(list2)를 통해 list_1에서 list_2를 이어 붙일 수도 있다.
# find와 index 함수
find 함수는 문자열에서 특정 문자열을 찾으며 없으면 -1을 반환.
index 함수는 리스트에서 특정 값을 가진 원소를 찾으며 없으면 error발생.
# sorted 함수
sorted(input_string)
문자열 안의 문자들을 크기 순으로 소팅하여 리스트로 만들어 준다.
# map 함수
리스트나 튜플의 원소에 대해서 동일한 인덱스값에
함수를 적용한 output을 원소로 가지는 map 객체를 반환하는 함수.
input_list = ['a','b','c']
output_list = list( map( ord, input_list) )
print( output_list )
를 하면, 아스키코드값에 해당하는 [ 97, 98, 99 ]를 얻을 수 있다.
list( map(chr, [ 97, 98, 99 ]) )을 하면 다시 ['a','b','c']를 얻을 수도 있다.
# count 함수
리스트나 문자열에서 value나 substring의 개수를 세어주는 함수.
# dictionary 자료형
dict1 = { '1':'a' , '2':'b', '3':'c' }와 같은 key:value pair를 원소로 가지는 자료형.
for pair in dict1:
print(pair)
를 한다면,
1
2
3
이라는 결과를 얻을 수 있다. for문을 돌리면 key만 출력된다.
또한 dict1[0], dict[1], dict[2]를 출력하면, a,b,c가 출력 될 것을 알 수 있다.
고로 위의 for문에서 value만 출력하고 싶다면
for pair in dict1:
print(dict1[pair])를 하면 된다.
# eval 함수
받은 문자열을 그대로 연산하게 해주는 내장함수
받은 문자열을 통해 별의 별 짓을 다 할 수 있어서 scanf처럼 안쓰는게 좋다.
# bin 함수
받은 십진법의 정수를 이진수로 바꿔준다.
print(bin(10))은 0b1010을 출력한다.
이는 int(10,2)로도 나타낼 수 있다.
int함수의 base 파라미터를 2로 설정하여 나타낼 수 있기 때문이다.
'거대한 정보의 더미들 > 파이썬 코딩테스트 정리' 카테고리의 다른 글
230119 (아카이브) 알고리즘 가이드 (3) | 2023.01.22 |
---|---|
파이썬 Input함수의 시간초과, sys.stdin.readline - 스택의 구현(백준 10828), (0) | 2023.01.22 |
파이썬의 모듈과 라이브러리의 차이 + Compiler Flag + Identifier(식별자) (0) | 2023.01.22 |
컴파일 언어와 인터프리터 언어의 차이 + Python과 Pypy의 차이 (0) | 2023.01.22 |
230112 일기0 개발공부를 시작하며 (0) | 2023.01.21 |