[PCCE 기출문제] 3번 / 수 나누기

2024. 9. 13. 18:00PCCE 기출문제

https://school.programmers.co.kr/learn/courses/30/lessons/340205

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
2자리 이상의 정수 number가 주어집니다. 주어진 코드는 이 수를 2자리씩 자른 뒤, 자른 수를 모두 더해서 그 합을 출력하는 코드입니다. 코드가 올바르게 작동하도록 한 줄을 수정해 주세요.


제한사항

  • 10 ≤ number ≤ 2,000,000,000
  • number의 자릿수는 2의 배수입니다.

입출력 예
입력 #1

4859


출력 #1

107


입력 #2

29


출력 #2

29

입출력 예 설명
입출력 예 #1

  • 입력된 수를 2자리씩 나눠 합치면 다음과 같습니다.
  • 48 + 59 = 107

입출력 예 #2

  • 입력된 수를 2자리씩 나눠 합치면 다음과 같습니다.
  • 29  = 29

디버깅(Debugging) 문제 안내

  • 디버깅(Debugging)은 이미 완성된 코드에서 버그를 찾아 수정하는 문제 타입입니다.
  • 1줄만 수정하여 버그를 고치세요.
  • 2줄 이상 수정할 경우, 실행 결과에 에러 메시지가 표시됩니다.

문제 코드

number = int(input())

answer = 0

for i in range(1):
    answer += number % 100
    number //= 100

print(answer)

주어진 숫자를 두 자릿수만큼 자른 뒤, 해당 값들을 합치는 문제입니다.

 

이 문제에서는 두 자릿수만큼 자른다는 걸 100으로 나눈 나머지를 더하는 것으로 구현을 했습니다.

하지만 반복문의 반복이 0번으로 설정되어, 두 자릿수 값 이외에는 값을 계산할 수 없습니다.

 

while과 for은 둘 모두 반복문이지만 사용하는 경우가 좀 다릅니다.

while은 반복의 횟수가 명확하게 주어져 있지 않은 경우에 사용합니다. 이 문제처럼 주어질 숫자가 몇 자리인지 명확하지 않을 때 사용하죠.

for은 반복의 횟수가 명확하게 주어져 있을 경우에 사용합니다. 이 문제에서 주어질 숫자가 4자리로 명확하다면, 반복 횟수는 2로 설정할 수 있죠.

 

for 반복문을 while 반복문으로 바꿔주는 것으로 정답 코드를 작성해보겠습니다.

number = int(input())

answer = 0

while number > 0:
    answer += number % 100
    number //= 100

print(answer)

 

number은 100으로 나눠주는 것으로 몫만을 계속 남깁니다. 이 몫이 0이하가 되는 순간, 더 이상 number는 나누는 의미가 없어지기 때문에 반복문을 종료합니다.

answer에는 number를 100으로 나눈 나머지를 더해주는 것으로 두 자릿수 값을 계속 더해주면 됩니다.