-
2023.7.29.토요일TIL( Today I Learned) 2023. 7. 30. 00:31
- 163//59 한 번만 등장한 문자 59
문제 설명
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
입출력 예
s result "abcabcadc" "d" "abdc" "abcd" "hello" "eho" 입출력 예 설명
입출력 예 #1
- "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.
입출력 예 #2
- "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.
입출력 예 #3
- "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.
내답. # 공부햇다
def solution(s):
answer = ''
uks = unique_chars=[]
for char in s:
if s.count(char)==1:
uks.append(char)
else:
pass
uks.sort() # uks = 사전 배열 리스트 그러나 중간에 마치 ['a','b']이런 형태일 것이다
answer= uks_st = ''.join(uks)
return answer
def find_unique_characters(a):
unique_chars = []
for char in a:
if a.count(char) == 1:
unique_chars.append(char)
return unique_chars
남의 풀이
def solution(s):
answer = "".join(sorted([ ch for ch in s if s.count(ch) == 1]))
return answer
- 163/58 문자열이 몇 번 등장하는지 세기. 58
-
문제 설명
문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString ≤ 1000
- 1 ≤ pat ≤ 10
입출력 예
myString pat result "banana" "ana" 2 "aaaa" "aa" 3 입출력 예 설명
입출력 예 #1
- "banana"에서 1 ~ 3번 인덱스에서 한 번, 3 ~ 5번 인덱스에서 또 한 번 "ana"가 등장해서 총 두 번 등장합니다. 따라서 2를 return 합니다.
연습예
als ="banananajjana"
pat ="ana"
#n1 =len(pat)
#print(n1)
count = 0
for i in range(len(als)) :
if als[i:i+len(pat)] == pat:
count +=1
print(count)
나의 답
def solution(myString, pat):
num = len(pat)
count = 0
for i in range(len(myString)):
if myString[i:i+num] == pat:
count +=1
return count
def solution(myString, pat):
return sum(myString[i:i + len(pat)] == pat for i in range(len(myString)))
def solution(myString, pat):
answer = 0
for i, x in enumerate(myString) :
if myString[i:].startswith(pat) :
answer += 1
return answer
물론 myString[i:].startswith(pat) 표현식 분석
- myString: pat 패턴을 찾기 위해 분석 중인 입력 문자열
- myString[i:]: 슬라이싱이라고 함 . 인덱스 i에서 시작하여 문자열 끝까지 myString의 새 하위 문자열을 생성.
- Python에서 문자열 인덱싱은 0부터 시작. 즉, 첫 번째 문자는 인덱스 0, 두 번째 문자는 인덱스 1 등을 의미.
- 따라서 myString[i:]는 색인 i의 문자에서 시작하여 원래 문자열의 끝까지 모든 문자를 포함하는 새 문자열을 제공.
- startswith(pat): 파이썬 문자열의 방법. 주어진 문자열이 지정된 pat(패턴) 문자열로 시작하는지 확인.
- 원래 문자열이 패턴으로 시작하면 'True'를 반환하고 그렇지 않으면 'False'를 반환합니다.
전체적 분석:
myString[i:].startswith(pat) 표현식은 색인 i에서 시작하여 문자열 끝까지 계속되는 myString의 하위 문자열(즉, myString[i:])이 다음. 패턴 팻.으로 시작하는지 확인.
.
따라서 solution 함수의 컨텍스트에서 이 표현식은 myString의 다른 하위 문자열에서 패턴 pat 발생을 찾기 위해 루프 내에서 사용됩니다. 루프는 myString의 각 문자를 반복하고 각 단계에서 나머지 하위 문자열(현재 문자에서 시작)이 pat 패턴으로 시작하는지 확인합니다. 그렇다면 패턴 pat가 해당 위치에 있고 answer 변수가 증가하여 발생 횟수를 세는 것을 의미합니다.
- 164//57세 개의 구분자
-
문제 설명
임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.
예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.
문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.
제한사항
- 1 ≤ myStr의 길이 ≤ 1,000,000
입출력 예
myStr result "baconlettucetomato" ["onlettu", "etom", "to"] "abcd" ["d"] "cabab" ["EMPTY"] 입출력 예 설명
입출력 예 #1
- 문제 설명의 예시와 같습니다.
입출력 예 #2
- "c" 이전에는 "a", "b", "c" 이외의 문자가 없습니다.
- "c" 이후에 문자열 "d"가 있으므로 "d"를 저장합니다.
- 따라서 ["d"]를 return 합니다.
입출력 예 #3
- "a", "b", "c" 이외의 문자가 존재하지 않습니다. 따라서 저장할 문자열이 없습니다.
- 따라서 ["EMPTY"]를 return 합니다.
쳇것
def solution(myStr):
# Initialize variables
result = []
current_str = ""
delimiters = {"a", "b", "c"}
# Loop through each character in the input string
for char in myStr:
if char in delimiters:
if current_str:
result.append(current_str)
current_str = ""
else:
current_str += char
# Append the last substring (if any)
if current_str:
result.append(current_str)
# Check if the result list is empty and return ["EMPTY"] in that case
if not result:
result = ["EMPTY"]
return result
'TIL( Today I Learned)' 카테고리의 다른 글
2023.7.31.월요일 : 코딧 강의와 프로그래머스 문제 (0) 2023.07.31 2023.7.30. 일요일 // 프로그래머스 문제 그리고 코딧 강의 (0) 2023.07.30 2023.7.28.금요일, index() 함수 & 문제풀이 (0) 2023.07.28 2023.7.27.목요일 (1) 2023.07.27 2023.7.26.수요일 (0) 2023.07.26 - 163//59 한 번만 등장한 문자 59