접두사인지 접미사인지 찾기 startswith(), endswith()
startswith() :시작 문자열이 지정된 문자와 같은지 : True or False형식으로 반환
endswith() : 끝 문자열이 지정된 문자와 같은지 : True or False형식으로 반환
표현 방식
문자열 A가 문자열 b로 시작하는지 여부를 t/f반환
a.startswith(문자열b)
문자열 A가 문자열 b로 끝나는지 여부를 t/f반환
문자열A.endswith(문자열B)
관련 문제 ) 프로그래머스 LV0. 접두사, 접미사 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181906
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드)
def solution(my_string, is_prefix):
if my_string.startswith(is_prefix): return 1
else: return 0
접미사 확인 문제도 있는도 endswith만 해주면 됨
코드)
def solution(my_string, is_suffix):
if my_string.endswith(is_suffix): return 1
return 0
lstrip() rstrip() strip() : 공백과 문자 제거 함수
lstrip : 문자열에 왼쪽 공백이나 인자가된 문자열의 모든 조합을 제거
rstrip : 문자열에 오른쪽 공백이나 인자가된 문자열의 모든 조합을 제거
strip : 양쪽 문자열에 공백이나 인자가된 문자열의 모든 조합을 제거
lstrip ex)
' hello'.lstrip() # 인자가 없을 경우 왼쪽 공백 제거
출력 'hello'
'apple'.lstrip('ap') # 왼쪽으로 a, p의 문자열의 모든 조합을 제거
출력 'le'
rstrip ex)
'hello '.rstrip() # 인자가 없을 경우 오른쪽 공백 제거
출력 'hello'
'apple'.rstrip('lep') # 오른쪽으로 l, e, p의 문자열의 모든 조합을 제거
출력 'a'
strip ex)
' apple '.strip() # 인자가 없을 경우 왼쪽 공백 제거
출력 'apple'
'apple'.strip('ae') # 양쪽끝에 a, e의 문자열의 모든 조합을 제거
출력 'ppl'
예제) 0떼기
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/181847
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(n_str):
return n_str.lstrip('0')
문자열 알파벳 변환 함수 ord() chr()
ord()
문자열을 아스키코드로 반환할 수 있는 함수
ord(c) 형태로 이용한다. 괄호( ) 안에 문자를 넣으면 그 문자에 해당하는 아스키코드를 숫자로 반환
ex)
>>> ord('a')
97
>>> ord('z')
122
chr()
아스키코드를 문자열로 변환하는 함수
chr(i) 형태로 이용한다. 괄호( ) 안에 숫자를 넣으면 그 숫자의 아스키코드에 대응하는 문자를 반환
사용 예시
>>> chr(65)
A
>>> chr(90)
Z
eval()함수
간단한 연산식을 string 에 저장 후 eval로 실행하면 위와 같이 연산된 값을 얻을 수 있음
사용 ex)
exp = "1 + 2"
result = eval(exp)
print(result)
# 3
그치만 eval()함수를 사용할때에는 조심해야한다고 한다.
외부로부터 입력받은 데이터를 검증 없이 eval()에 전달하면 악의적인 코드가 실행될 수 있기 때문!
이는 코테 말고 cs정리 할때 찾아봐야겠다 .
cf) ast.literal_eval이런거 사용하면 된다고 하는...??
문자열 중복제거
https://school.programmers.co.kr/learn/courses/30/lessons/120888
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
이 문제에서 set을 사용하려고 했는데 set은 순서가 보장이 되지 않는다.
1. set로 변환 후 join 함수 사용 : 순서보장 X
s = 'aaabbbccc'
b = ''.join(set(s))
print(b) # cba
2. dict.fromkeys(word)
파이썬 3.6부터 dict가 순서보장하기 때문에 사용가능
s = 'aaabbbcccddd'
a = ''.join(dict.fromkeys(s))
print(a) # abcd
인덱스 슬라이싱
https://robotai.tistory.com/27
파이썬(Python) 슬라이싱(slice) 이해하기
슬라이스(Slice)의 사용법은 아주 간단합니다. 먼저 기본 사용법에 대해서 알아보죠. items[start:stop] # 리스트의 start 인덱스에서 stop-1 인덱스까지 슬라이싱 items[start:] # 리스트의 start 인덱스에서 리
robotai.tistory.com
# def solution(my_string, s, e):
# answer = ''
# for i in range(0, s):
# answer += my_string[i]
# for i in range(e, s-1, -1):
# answer += my_string[i]
# for i in range(e+1,len(my_string)):
# answer += my_string[i]
# return answer
def solution(my_string, s, e):
return my_string[:s] + my_string[s:e+1][::-1] + my_string[e+1:]
cf) join과 +=결합의 성능 차이
join과 +=는 문자열을 결합할 때 다르게 동작하며, 성능 차이가 있을 수 있다.
1.+= 사용
+=는 문자열을 반복적으로 이어붙일 때마다 새로운 문자열을 생성
이는 불변(immutable)한 문자열의 특성상, 매번 새로운 문자열 객체를 생성하고, 그 객체에 기존 문자열을 복사하는 작업을 함
따라서 +=를 많이 사용할 경우, 특히 문자열의 길이가 길거나 반복 횟수가 많을수록 시간이 더 걸릴 수 있음
2. join 사용:
join은 리스트나 다른 이터러블(iterable)을 하나의 문자열로 결합하는 메서드
이는 새로운 문자열 객체를 생성하지 않고, 한 번에 결합을 수행하기 때문에 더 효율적입니다
join은 메모리 사용과 속도 측면에서 +=보다 더 우수한 성능을 보임
정리) 성능 비교
+=를 반복적으로 사용하는 경우 문자열을 결합할 때마다 새로운 객체를 생성해야 하므로 시간이 더 오래 걸리 수 있음
반면 join은 문자열을 한 번에 결합하는 방식이므로, 대규모 데이터에서는 join이 더 빠를 수 있다.
따라서 많은 문자열을 결합하는 경우 join을 사용하는 것이 성능 면에서 유리
순열과 조합
combinations : 파이썬 조합
from itertools import combinations
for i in combinations([1,2,3,4], 2):
print(i, end=" ")
from itertools import combinations
def solution(balls, share):
for i in combinations(range(balls), share):
print(i)
solution(5, 3)
조합 개수만 구하고 싶다면?
반복문 없이 가능해서 더 효율적임
from math import comb
def solution(balls, share):
return comb(balls, share) # 조합 개수 계산
print(solution(5, 3)) # 결과: 10
permutations : 파이썬 순열
from itertools import permutations
for i in permutations([1,2,3,4], 2):
print(i, end=" ")
순열 개수만 구하고 싶다면?
마찬가지로 math에서 사용하면 됨
from math import perm
def solution(n, r):
return perm(n, r)
print(solution(5, 3)) # 결과: 60
count 함수 : 문자열 셀때 사용
문자열 안에서 찾고 싶은 문자의 개수를 찾을 수 있음
어떤 함수는 문자열에서만 사용 가능한 함수도 있는데 count 함수는 튜플, 리스트, 집합과 같은 반복 가능한 iterable 자료형에서도 사용 가능
모든 자료형에서 사용 가능한 것은 아님
사용방법: '변수. count(찾는 요소)' 형태
괄호( ) 안에 찾고자 하는 값을 입력하면 함수를 사용한 변수 안에서 해당 값의 개수를 숫자로 반환한다.
ex)7의 개수 세기
def solution(array):
answer = 0
for i in array:
answer += str(i).count('7')
return answer
'CS&알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV.2] H-Index (Python풀이) (4) | 2025.02.10 |
---|---|
[프로그래머스 LV.2] 가장 큰 수 (python 풀이, 시간 초과 해결) (1) | 2025.02.04 |
[프로그래머스 LV.2] 구명보트 python 풀이 (feat.그리디) (1) | 2024.11.20 |
[프로그래머스 LV.2] 점프와 순간이동 (feat.그리디) (0) | 2024.11.20 |
[프로그래머스 LV.2] 카펫(feat.완전탐색) (0) | 2024.11.19 |