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를 깎는다.