코딩 테스트/leetCode

[leetCode] 1323. Maximum 69 Number (Python)

우주바다 2022. 10. 25. 14:27
728x90

▼ 문제 바로가기 (링크)  

https://leetcode.com/problems/maximum-69-number/

 

Maximum 69 Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


양의 정수 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
반응형