오늘은 데이터 분석 파이썬 종합 강의 3강과 튜터님의 두번째 세션을 듣고 프로그래머스 자릿수 더하기 과제를 수행해봤다.
1> 데이터 분석 파이썬 종합 TIL
반복문과 조건문의 기본적인 내용은 다른 강의를 통해 숙지하고 있었고, 대부분의 내용이 복습이었다.
size = 5
for i in range(size):
for j in range(i + 1):
print("*", end="")
print()
여러가지 코딩 과제를 직접 따라하면서 수행해봤는데 그 중 별 모양 만들기 파트가 흥미로웠다. print에서 end=""의 역할이 궁금했는데, 찾아보니 일반적으로 print가 실행되고나면 다음줄로 이동하는데 end=""를 사용하면 다음줄로 이동하지 않고 기존 내용 옆에 출력이 되기 때문이었다.
따라서 *을 필요한 개수만큼 출력하고 아래에서 print()를 이용해 줄을 옮겨주는 것이었다.
size = 5
for i in range(size, 0, -1):
for j in range(i):
print("*", end="")
print()
size를 5에서부터 시작해서 1씩 감소하게 변경하여 역삼각형을 만들어보기도 했다.
size = 5
for i in range(size):
# 1. 공백 출력: 위에서 아래로 갈수록 공백이 하나씩 줄어듦
for j in range(size - i - 1):
print(" ", end="")
# 2. 별 출력: 홀수 개수(2*i + 1)만큼 별을 출력
for k in range(2 * i + 1):
print("*", end="")
# 3. 줄 바꿈
print()
그리고 나서, 강의 내용에는 없었지만 정삼각형을 한번 만들어보기로 했는데. 아래로 갈수록 공백이 하나씩 줄어드는 규칙성과 1개부터 시작해서 홀수 개의 별이 나오는것에 착안하여 코드를 작성했다.

결과는 성공적 !
2> 튜터님께서 세션을 진행하시고, 마지막에 프로그래머스 자릿수 더하기 과제를 한번 풀어보라고 하셔서 풀이법을 생각해보고 그에 맞게 코드를 작성해보았다.

아이디어1) 10으로 나누었을 때 몫과 나머지를 분리하고, 나머지만 더해준다. 몫이 10이상일때 반복
def solution(n):
answer = 0
remainder = 0 #나머지
while n>=10:
remainder = n%10
n = n//10 #몫 계산후 다시 대입
answer += remainder
answer += n #루프 종료후 남은 한자리를 더해줌
return answer
첫번째 방법은 입력받은 수를 그대로 int로 유지하고 10으로 나누며 나머지만 계속 더해주는 방식으로 코드를 작성해보았다.
이를 위해 나머지 값을 저장하기위한 remainder항을 만들어주었고 answer에 더해주었다.
코드가 복잡해보여서 간단하게 만들기위해 조금더 생각을 해봤는데
def solution(n):
answer = 0
while n > 0:
answer += n % 10 # 나머지 더하기
n //= 10 # 몫 갱신
return answer
1. n>=10 대신 n>0 조건을 사용하여 answer +=n을 대신할 수 있었고
2. reaminder 항이 결국 n%10을 의미하기 때문에 answer += reaminder를 answer += n%10으로 적어서 변수 하나를 줄일 수 있었다.
3. 또한 n = n//10 도 n //= 10으로 간단하게 적을 수 있었다.
아이디어2) 입력받은 int값을 str로 변환 후 한자리씩 int로 변환하여 합산
첫번째 아이디어에서 while문을 사용한 이유가 n의 값이 int 자료형일 경우 for ~ in n 이런식으로 넣었을때 순서 정보를 담고 있는 자료형이 아니라 입력받은 수의 자리수에 따라 반복의 횟수를 유동적으로 조절하기 힘들다고 생각했기 때문이다.
하지만, 이를 str로 바꾸어 한자리씩 순서대로 넣어서 int로 변환하여 더해주면 쉽지 않을까라는 생각이 들게 되었다.
def solution(n):
answer = 0
for i in str(n): #str으로 변환하여 앞에서부터 한자리씩 넣어줌
answer += int(i) #int으로 다시 변환하여 answer에 더해줌
return answer
코드를 작성 후 실행해보니 성공적인 결과를 얻을 수 있었다.
def solution(n):
return sum(int(digit) for digit in str(n))
하지만 조금 더 조사를 해보니 놀랍게도 삼항연산자와 sum()을 이용하여 코드를 한줄로 만들 수가 있었는데, 앞으로도 어떤 코드를 작성 했을때 항상 추가적으로 검토하여 어떤 개선이 가능할지 확인하겠다고 다짐했다.
'내일배움캠프 > TIL(Today I Learned)' 카테고리의 다른 글
| [2026/03/20] 내일배움캠프 10일차 TIL (0) | 2026.03.20 |
|---|---|
| [2026/03/19] 내일배움캠프 9일차 TIL (0) | 2026.03.19 |
| [2026/03/17] 내일배움캠프 7일차 TIL (0) | 2026.03.17 |
| [2026/03/16] 내일배움캠프 6일차 TIL & KPT 회고 (0) | 2026.03.16 |
| [2026/03/13] 내일배움캠프 5일차 TIL (0) | 2026.03.13 |