Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Class
- OOP
- baekjoon
- 배열
- 백준
- Object Oriented Programming
- 문자열
- const
- 반복문
- pass by reference
- assignment operator
- C++
- 오블완
- 알고리즘
- 파이썬
- vscode
- pointer
- raw data
- 함수
- Pre-processing
- predictive analysis
- array
- programming
- Python
- 티스토리챌린지
- 포인터
- Data Science
- Deep Learning
- function
- string
Archives
- Today
- Total
Channi Studies
[programmers] 문자열 여러번 뒤집기 (python) 본문
문제


for문 내에서 queires 내의 index들을 반복적으로 my_string에 적용시키면서,
적용된 내용을 다시 my_string에 저장하는 방식으로 하면 될 것 같다.
코드 및 설명
def solution(my_string, queries):
result = my_string
for index in queries:
front_string = result[:index[0]]
mid_string = result[index[0]: index[1] + 1]
back_string = result[index[1] + 1:len(result)]
result = front_string + mid_string[::-1] + back_string
return result
for문 속의 string slicing 내용만 이해하면 쉽게 이해할 수 있을 것 같다.
string[a:b]는 (a ~ b-1) 번째 인덱스에 있는 값들을 반환한다.
즉, print("abcde"[1 : 4])
➡️ "abcde"[1] ~ "abcde"[4 - 1 = 3]을 출력하므로, b ~ d 까지의 문자열, 즉 "bcd" 를 출력한다.
또한, a == b -1 이라면 string[a]와 똑같은 값을 출력한다.
➡️ "abcde"[1:2] = "abcde"[1] = "b"
그렇기 때문에, 문제에서 제공된 문자열을 뒤집어야 할 mid_string을 제외하고 앞 뒤로 나누는데는 위와 같은 코드가 필요하다.
또한, 문자열을 뒤집기 가장 쉬운 방법은 string[::-1]이다.
이는 range의 그것과 유사한데, 처음부터 끝까지 문자열을 거꾸로 출력해준다.
이 모든걸 활용해서, string을 3개로 나눈 뒤, 중간 부분만 뒤집고, 다시 합치는 방식을 반복한 코드이다.
더 나은 코드가 있는 걸 알지만, 아직 공부하고 있으니까 이해해주세요~
'python' 카테고리의 다른 글
[baekjoon] 2563번 색종이 Python (0) | 2023.10.14 |
---|---|
[baekjoon] 10789번 세로읽기 Python (1) | 2023.10.14 |
[python] tkinter miles km converter / tkinter 마일 킬로미터 변환기 (3) | 2023.10.10 |
[python] *args 과 **kwargs (6) | 2023.10.10 |
[python] list comprehension 리스트 컴프리헨션 (0) | 2023.10.09 |