파이썬13 [프로그래머스][파이썬] #14. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 📝 문제 ✔️ 풀이 def solution(myString, pat): return myString[:len(myString) - myString[::-1].index(pat[::-1])] ✏️ 배운점 끝나는 부분을 찾아야 하기 때문에 [::-1]로 문자열을 뒤집는다. 그 후 index를 이용하여 pat를 찾는 순서를 이용하면 풀 수 있는 문제이다. 출처 : 프로그래머스 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기(https://school.programmers.co.kr/learn/courses/30/lessons/181872) 2023. 9. 7. [프로그래머스][파이썬] #13. 1로 만들기 📝 문제 ✔️ 나의 풀이 def solution(num_list): answer = 0 for n in num_list: while n != 1: if n % 2 == 0: n //= 2 else: n -= 1 n //= 2 answer += 1 return answer 🔎 다른 사람의 풀이 def solution(num_list): return sum(len(bin(i)) - 3 for i in num_list) ✏️ 배운점 문제에 나온대로 구현하는 기초적인 문제이다. 다른 분들의 풀이를 보았을때,, bin을 통하여 2진법으로 변환하여 len(bin(i)) - 3 을 통하여 2로 나누었을 때의 횟수를 구한다.. 아직 갈 길이 멀다고 생각했다. 출처 : 프로그래머스 1로 만들기(https://school.. 2023. 9. 7. [프로그래머스][파이썬] #12. 조건에 맞게 수열 변환하기 2 📝 문제 ✔️ 풀이 from copy import deepcopy def solution(arr): c = 0 before_arr = deepcopy(arr) while True: for i, a in enumerate(arr): if a >= 50 and a % 2 == 0: arr[i] //= 2 elif a < 50 and a % 2: arr[i] = arr[i] * 2 + 1 if before_arr == arr: return c before_arr = deepcopy(arr) c += 1 ✏️ 배운점 공희찬님의 풀이를 참고하였다. 조건에 맞게 수열 변환하기 1의 심화 버전인데 deepcopy를 이용하여 배열을 복사하여 arr(x) = arr(x+1)을 찾을 수 있었다. 출처 - 프로그래머스 (h.. 2023. 8. 18. [프로그래머스][파이썬] #11. 왼쪽 오른쪽 📝 문제 ✔️ 나의 풀이 def solution(str_list): for i in range(len(str_list)): if str_list[i] == "l": return str_list[:i] elif str_list[i] == "r": return str_list[i+1:] return [] 🔎 참고 풀이 def solution(str_list): for i, s in enumerate(str_list): if s == 'l': return str_list[:i] elif s == 'r': return str_list[i+1:] return [] ✏️ 배운점 문제는 단순하다. str_list를 순회하여 l 혹은 r을 찾아 슬라이싱을 해주면 된다. 다만 다른 분들의 풀이를 참고했을 때는 enume.. 2023. 8. 16. 이전 1 2 3 4 다음