728x90
▼ 문제 바로가기 (링크) ▼
https://leetcode.com/problems/maximum-69-number/
양의 정수 num이 주어진다. num은 6과 9로만 이루어져있다.
딱 1번, 한 자리의 수를 6에서 9로 바꿀 수 있을 때,
최댓값을 정수로 반환하는 문제.
for j in range(len(num)):
if num[j] == "6":
num[j] = "9"
break
# 런타임 오류
TypeError: 'str' object does not support item assignment
num[j] = "9"
처음에는 단순하게 정수를 문자열로 바꾸고 순회하면서
그 값이 6이면 9로 재할당하려고 했다,
문자열은 값 재할당을 지원하지 않는다는 오류.
class Solution:
def maximum69Number (self, num: int) -> int:
num = str(num)
tmp = []
for i in num:
tmp.append(i)
for j in range(len(num)):
if num[j] == "6":
tmp[j] = "9"
break
answer = int("".join(tmp))
return answer
반복문에서 하나씩 끊어오는 i나 j같은 요소는 저장되는 값도 아니고
계속 바뀌는 변수이므로 그 자체로 변경할 수 없다는 걸 알게되었다.
가장 먼저 6이 등장하는 인덱스가 임시 리스트의 인덱스와 같다는 것을
이용해서 값을 바꿨다. 그 후 리스트 요소를 다시 하나로 합치고 int 형변환해서 반환했다.
어떤 숫자나 문자의 부분 값을 변경하려면 리스트의 인덱스로 접근해야한다는 것을 배웠다.
728x90
반응형
'코딩 테스트 > leetCode' 카테고리의 다른 글
[leetCode] 561. Array Partition (Python) (0) | 2022.10.26 |
---|---|
[leetCode] 1827. Minimum Operations to Make the Array Increasing (Python) (0) | 2022.10.25 |
[leetCode] 1662. Check If Two String Arrays are Equivalent (Python) (0) | 2022.10.25 |
[leetCode] 709. To Lower Case (Python) (0) | 2022.10.24 |
[leetCode] 1816. Truncate Sentence (Python) (0) | 2022.10.24 |