본문 바로가기
  • think together
카테부 4기 판교 ai 실무/코테 공부

카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day17

by hwamgai 2026. 6. 10.

문제 : 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/181872

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

def solution(myString, pat):
    answer = ''
    index = 0
    
    for i in range(len(myString)):
        if pat[-1] == myString[i]:
            index = i
            
    answer = myString[:index+1]
    return answer

좋은 코드:

solution=lambda x,y:x[:x.rindex(y)+len(y)]
def solution(myString, pat):
    return myString[:len(myString) - myString[::-1].index(pat[::-1])]
 🤖 rindex() 는 파이썬 문자열(String)에서
특정 문자열이 마지막으로 등장하는 위치(인덱스)를 오른쪽에서부터 찾아주는 함수입니다.
text = "banana"

print(text.index("a"))   # 1  (가장 처음 나온 'a'의 위치)
print(text.rindex("a"))  # 5  (가장 마지막에 나온 'a'의 위치)​

 

 

 

 

문제 : 문자열이 몇 번 등장하는지 세기

https://school.programmers.co.kr/learn/courses/30/lessons/181871

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

- 반복문을 몇 번을 돌아야할지 몰랐다 : 처음에는   for i in range(int(len(myString)/len(pat))+2): 로 했는데

테스트는 잘 되었지만 채점에서 틀렸다

def solution(myString, pat):
    answer = 0

    
    for i in range(len(myString)-len(pat)+1):
        if myString[i:i+len(pat)] == pat:
            answer += 1
        
    return answer

좋은 코드:

def solution(myString, pat):
    answer = 0
    for i, x in enumerate(myString) :
        if myString[i:].startswith(pat) :
            answer += 1
    return answer
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 in range(len(myString)):
        if myString[i:i+len(pat)]==pat:answer+=1
    return answer

 

 

 

 

 

문제 : ad 제거하기

https://school.programmers.co.kr/learn/courses/30/lessons/181870

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내코드 :

- 🤖 문자열에서 특정 문자열 찾기 : in 사용 or find 사용

def solution(strArr):
    answer = []
    
    for i in strArr:
        if 'ad' not in i:
            answer.append(i)
    return answer

좋은 코드:

def solution(strArr):
    return [word for word in strArr if 'ad' not in word]
def solution(strArr):
    answer = []
    for x in strArr:
        if 'ad' in x: continue
        answer.append(x)
    return answer
def solution(strArr):
    for str in strArr[:]:
        if 'ad' in str:
            strArr.remove(str)
    return strArr

 

 

 

 

문제: 공백으로 구분하기1

https://school.programmers.co.kr/learn/courses/30/lessons/181869

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내코드:

🤖 문장끝 띄어쓰기가 없는 단어는 그냥 추가하기 : my_string[b:] 이용
def solution(my_string):
    answer = []
    a,b = 0,0
    for i in range(len(my_string)):
        if my_string[i] == ' ':
            a = i
            answer.append(my_string[b:a])
            b = a+1
            
    answer.append(my_string[b:])
    return answer

좋은 코드:

def solution(my_string):
    return my_string.split(' ')
def solution(my_string):
    answer=[]
    string=""
    for j in range(len(my_string)):
        if my_string[j]!=' ':
            string=string+my_string[j]

        if j==len(my_string)-1 or my_string[j]==' ':
            answer.append(string)
            string=""
    return answer

 

 

 

 

문제: 공백으로 구분하기2

https://school.programmers.co.kr/learn/courses/30/lessons/181868

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

def solution(my_string):
    answer = []
    
    for i in my_string.split(' '):
        if len(i) >= 1:
            answer.append(i)
    return answer

좋은코드:

def solution(my_string):
answer = my_string.split(' ') 으로 했더니 출력이 "", "", "i" 이런식으로 나왔어. 왜그래?
🤖 split(' ')은 공백 '하나'를 만날 때마다 무조건 칼질을 합니다.
def solution(my_string):
    answer = my_string.split()
    return answer
solution=lambda x:x.split()
def solution(my_string):
    return [i for i in my_string.split(" ") if i != ""]
def solution(my_string):
    my_string = my_string.strip()
    words = my_string.split()
    return words