오늘은 파이썬 문법을 다채롭게 배운 하루였다.
쉽지않은 녹록치않은 파이썬 문법...
컴퓨터와 대화를 해보고싶지만 제2 외국어를 배우는 기분이다.
형식 : def solution(n):
answer = []
return answer
문제 : 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건 n은 10,000,000,000이하인 자연수입니다.
코드 설명
- str(n):
- 자연수 n을 문자열로 변환하여 각 자리 숫자를 처리할 수 있도록 합니다.
- [::-1]:
- 문자열을 뒤집는 슬라이싱 기법입니다. 이를 통해 숫자의 순서를 반전시킵니다.
- 리스트 컴프리헨션:
- [int(digit) for digit in ...]은 뒤집힌 문자열의 각 문자를 순회하며 정수형으로 변환해 리스트에 추가합니다.
- 결과 반환:
- answer 리스트를 반환하여 문제의 요구사항을 충족합니다.
해당 코드를 사용하여 형식에 맞춰 코딩을 하고 리스트 컴프리헨션으로 변환하여 간소화 해보면
아래와 같이 코딩이 가능하다.
def solution(n): # 자연수 n을 문자열로 변환하여 뒤집고, 각 자리 숫자를 정수형으로 변환해 리스트로 반환
answer = [int(digit) for digit in str(n)[::-1]] return answer
여기까지 간단하게 코딩이 가능 한 것처럼 보이지만
"리스트 컴프리헨션" 이라는 절차가 들어가서 간단해 보이는거다
리스트 컴프리헨션을 사용하지 않으면 이렇게 나온다.
def solution(n):
answer = [] # n을 문자열로 변환하여 한 자리씩 순회
for digit in str(n)[::-1]: # 문자열을 뒤집은 상태에서 순회
answer.append(int(digit)) # 각 자리 숫자를 정수로 변환하여 리스트에 추가
return answer
for 반복문을 사용하는 것은 동일 하지만 길이가 훨씬 길어졌다
- 문자열 변환 및 뒤집기:
- str(n)[::-1]: 자연수 n을 문자열로 변환한 뒤, [::-1] 슬라이싱을 사용하여 순서를 뒤집습니다.
- 반복문:
- for digit in str(n)[::-1]: 뒤집힌 문자열의 각 문자를 반복적으로 순회합니다.
- 정수 변환 및 추가:
- answer.append(int(digit)): 각 문자를 정수로 변환한 뒤 answer 리스트에 추가합니다.
- 결과 반환:
- 모든 숫자가 리스트에 추가되면 answer를 반환합니다.
이제 출력을 해보자
print(solution(12345))
[5, 4, 3, 2, 1]
정확하게 입력 값이 역순으로 나오는 걸 확인 할 수 있다.
아직은 반복문, 언어가 머리와 손에 익지 않아 비슷한 문제들을 더 코딩해봐야겠다