
바로 직전에 문자열 뒤집기를 했어서 쉽게 풀었다. 여기서 내가 몰랐던 것은 뒤집은 값을 다시 반복할 때 사용하고 싶었는데 그걸 몰랐다. def solution(my_string, queries): for i in range(len(queries)): [s,e]=queries[i] my_string = my_string[:s]+my_string[s:e+1][::-1]+my_string[e+1:] return my_string 4번 째 줄처럼 my_string = my_string[:s]+my_string[s:e+1][::-1]+my_string[e+1:] 이렇게 해야하는데... answer = my_string[:s]+my_string[s:e+1][::-1]+my_string[e+1:] 이렇게 해서 나는 ..

슬라이싱을 이용하면 되는 문제이다! 하지만 뒤집는 부분의 슬라이싱이 이해가 잘 되지 않는다. def solution(my_string, s, e): answer = my_string[:s] + my_string[s:e+1][::-1] + my_string[e+1:] return answer 저 가운데에 있는 my_string[s : e+1][ : : -1]이 이해가 되지 않았다. 우선은 이해하지 말고 알아두자! 그리고 궁금해서 gpt한테 물어보니 알려준 코드는 def solution(my_string, s, e): answer = my_string[:s] + my_string[e:s-1:-1] + my_string[e+1:] return answer 제출 해보니 실패가 2개가 떴다.. 생각해도 몰라서 친..

이걸 계속 봐도 도저히 어떤 식으로 풀어야 할지 몰라서 친구의 도움을 받았다. 0을 52개 만들고 my_string에서 해당 글자가 나오면 바로바로 1을 더하면 위치와 개수가 맞는다. 대문자면 앞에 26개, 소문자면 뒤에 26개에 해당한다. 개수는 나올 때마다 1을 더하면 개수는 해결되고, 위치는 유니코드를 이용했다. def solution(my_string): answer = [0]*52 for i in range(len(my_string)): if my_string[i].isupper(): answer[ord(my_string[i])-ord("A")] += 1 elif my_string[i].islower(): answer[ord(my_string[i])-ord("a")+26] += 1 return ..
Programmers의 코딩 기초 트레이닝을 풀면서 Python 공부를 하고 있다. 리스트가 많이 나오고 리스트 연산에 대해 헷갈리는 부분이 많아 한 번 정리하려고 한다. insert() insert(a, b) : 리스트의 a번 째 위치에 b를 삽입 a번 째 위치에 삽입되면서 한 칸씩 뒤로 밀린다. remove() remove(a)를 실행 시, 리스트에서 첫 번째로 나오는 a를 삭제한다. 리스트에 동일한 a가 여러 개 있다면, 가장 첫 번째로 나오는 a만 삭제 pop() 리스트의 맨 마지막 원소를 리턴하고 해당 원소는 삭제한다. pop(i)는 리스트이 i 번 째 원소를 리턴하고 삭제한다. reverse() 리스트를 역순으로 뒤집는 연산 현재 리스트를 있는 그대로 뒤집는 연산 sort() 리스트의 원소들을..

조건 주어진대로 코드를 작성하고 Run Test를 했는데 성공해서 제출을 하니 그건 또 실패가 엄청 많았다... 뭐가 문제인지 모르고 다른 사람과 비교를 해보며 다른 부분 또는 함수를 찾고 검색을 해보았다. 하나를 바꾸니 바로 성공했다... 바로 remove()와 pop() 이었다. 코드를 작성할 때 나의 생각은 마지막 원소를 지우면 되니까 remove()로 마지막 원소를 지우면 되지 않을까? 했는데 그게 아니였다.. 우선 코드를 보자! def solution(arr): answer = [] i = 0 while i < len(arr): if not answer: answer.append(arr[i]) i += 1 elif answer[-1] == arr[i]: answer.remove(answer[-1..

문제를 보자마자 먼저 나오는 문자열?? 이거 break 써야겠다라는 생각을 했다. 순서대로 담는 것은 슬라이싱을 해야하고 하나씩 answer 리스트에 추가하는 방법은 아직은 모르겠다 ㅠㅠ 하나씩 추가하는 방법이 더 복잡한 것 같기도하고... def solution(str_list): answer = [] for i in range(len(str_list)): #str_list의 길이만큼 반복문! if str_list[i] == "l": #str_list의 인덱스 값이 "l"이면 answer = str_list[:i] #str_list 처음부터 l 전까지의 값만 출력 break #먼저 나오는 "l"에서만 적용하기 위해!! elif str_list[i] == "r": #str_list의 인덱스 값이 "r"이..

어떻게 해야할지 아예 생각을 못했다... def solution(myStr): answer = [] result = [] answer = myStr.replace("b","a").replace("c","a").split('a') #b를 a로, c를 a로 바꾸고 a로 구분해라 for i in answer: if i: #i에 무언가 있으면 true result += [i] #result에 i를 추가한다. if result == []: #result가 비어있으면 result = ["EMPTY"] #["EMPTY"]를 출력하라 return result 내가 아는 게 For, While, If 밖에 모르지만 다 할 수 있겠지??ㅠㅠㅠ너무 모르네 진짜 ㅠㅠㅠ 공부해보자!!! 다른 사람은 어떻게 풀었나 봐보자!! d..