얼렁뚱땅

[Cos Pro 1급][Python][기출문제] 1차 문제 4 본문

Python Study/Cos Pro 1급 기출문제

[Cos Pro 1급][Python][기출문제] 1차 문제 4

당당익명 2024. 2. 8. 00:39
문제 유형 : 구현

💠문제설명

어느 누군가가 타임머신을 타고 과거로 가서 숫자 0이 없는 수 체계를 전파했습니다. 역사가 바뀌어 이제 사람들의 의식 속엔 0이란 숫자가 사라졌습니다. 따라서, 현재의 수 체계는 1, 2, 3, ..., 8, 9, 11, 12, ...와 같이 0이 없게 바뀌었습니다.

0을 포함하지 않은 자연수 num이 매개변수로 주어질 때, 이 수에 1을 더한 수를 return 하도록 solution 함수를 완성해주세요.

💠매개변수 설명

더보기

자연수 num이 solution 함수의 매개변수로 주어집니다.
* num은 1 이상 999,999,999,999,999,999 이하의 0을 포함하지 않는 자연수입니다.

💠Return 값 설명

더보기

자연수 num에 1을 더한 수를 return 해주세요.

💠예시

더보기

| num     | return |
|---------|---------|
| 9949999 | 9951111 |

9,949,999에 1을 더하면 9,950,000이지만 0은 존재하지 않으므로 9,951,111이 됩니다.

💠코드

전체코드

def solution(num):
    answer = ''
    for i in str(num+1):
        if i == '0':
            i = '1'
        answer += i
    return answer
    
#The following is code to output testcase.
num = 9949999;
ret = solution(num)

#Press Run button to receive output. 
print("Solution: return value of the function is", ret, ".")
  • 일단 1을 더해서 string으로 바꿔주고, 하나씩 가져와서 0이면 1로 바꿔주는 작업을 한다.

💠개인정리

for i in range(len(str(num+1))):
    if new[i] == '0':
        new[i] = '1'

TypeError: 'str' object does not support item assignment

위와 같은 방식으로는 안된다.

💠Python 답게 문제 풀기

#Comprehension (expression)
num = 9949999
answer = ''.join('1' if x =='0' else x for x in str(num+1))
print(answer)
  • Comprehension으로 간단하게 만들기
    • comprehension에 대한 자세한 내용은 따로 정리를 하였다.
  • 만들어진 character를 하나씩 join 하기