Algorithm

실습 문제 풀이 (나머지를 이용한 문제 풀이)

김디니 2022. 7. 19. 22:59

20번

1. str(), range(len()) 사용

정수 number가 주어질 때, 각 자릿수의 합을 구해서 출력하세요.

n = str(input()) #입력 123
add = 0

for i in range(len(n)):
    add += int(n[i])

print(add)

# 출력 6

n을 문자열 바꿔 n에 저장한다.

n의 길이만큼 i에 하나씩 저장한다.

i를 인덱스로 씌워주고, 인덱스 값을 add에 계속 더해준다.

(더해주기 위해 int로 변환해준다. )

2. 나머지 더하기

10으로 나눌 때 3, 2, 1로 남는 나머지 값을 더한다.

number = 123
result = 0

while number: #number가 0일 때 멈춘다. 
              #int는 0일 때 false이기 때문이다.
    result += number % 10 # 몫은 다음 number가 되고, 나머지는 더해나간다. 
                          # 나머지를 먼저 기록해야한다. 
    number //= 10 

print(result)

# divmod 사용
result, remainder = divmod(number, 10) #divmod(x,y)는 x를 y로 나누고 결과를 튜플로 반환한다. (몫, 나머지)
result += remainder

print(result)

21번

주어진 숫자를 뒤집은 결과를 출력하시오.

(문자열이 아닌 숫자로 활용. str() 사용 금지)

1. str() 사용

number = 1234

print(int(str(number)[::-1]))

str() 함수를 통해 number(1234)를 [::-1]로 역순으로 배열하여 출력한다.

2. 10을 나눈 나머지 값 활용

def f(n):
    if n <= 0: return
    print(n % 10, end='')
    f(n//10)

f(1234) 
# 출력 4321

f라는 함수를 만들어 사용한다. 

if 조건문으로 만약 n이 0보다 작거나 같다면 출력값을 반환하도록 한다.

n에 10을 나눈 나머지 값을 출력한다.

0이 될 때 까지 n을 10으로 나눈다. (n을 깎는다)

n에 1234를 넣는다.

3. 10 곱하고 나머지 더하기 (모범 답안)

result = 0

while number:
   result *= 10 
   result += number % 10 
   number //= 10 

while문을 활용한다.

이전 결과에 10을 곱하고

10을 나눈 나머지를 더해주고

number를 깎는다.