카테고리 없음

2일차 TIL - 컴퓨터와 대화가 어렵다...

게임취업하고싶은 사람 2024. 12. 24. 20:00

오늘은 파이썬 문법을 다채롭게 배운 하루였다.

쉽지않은 녹록치않은 파이썬 문법...

컴퓨터와 대화를 해보고싶지만 제2 외국어를 배우는 기분이다.

 

형식 : def solution(n):

          answer = []

          return answer

 

문제 : 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.

예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건 n은 10,000,000,000이하인 자연수입니다.

 

코드 설명

  1. str(n):
    • 자연수 n을 문자열로 변환하여 각 자리 숫자를 처리할 수 있도록 합니다.
  2. [::-1]:
    • 문자열을 뒤집는 슬라이싱 기법입니다. 이를 통해 숫자의 순서를 반전시킵니다.
  3. 리스트 컴프리헨션:
    • [int(digit) for digit in ...]은 뒤집힌 문자열의 각 문자를 순회하며 정수형으로 변환해 리스트에 추가합니다.
  4. 결과 반환:
    • 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]

 

정확하게 입력 값이 역순으로 나오는 걸 확인 할 수 있다.

 

아직은 반복문, 언어가 머리와 손에 익지 않아 비슷한 문제들을 더 코딩해봐야겠다