본문 바로가기

Skill Sets/Python

[Python] 자연수 뒤집어 배열로 만들기(프로그래머스/python/Level 1)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 연습에 있는 "자연수 뒤집어 배열로 만들기" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12932)

 


 

1. 문제 :  자연수 뒤집어 배열로 만들기(Lv. 1)

 


 

2. 문제 설명

 

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

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

 

[ 제한 사항 ]

 

n은 10,000,000,000 이하인 자연수입니다.

 

[ 입출력 예 ]

 

n return
12345 [5,4,3,2,1]
789 [9, 8, 7]

 

3. 문제 풀이

# 1안
def solution(n):
    answer = []
    a = str(n)
    for i in range(len(a)):
        value = int(a[i])
        answer.append(value)
    answer.reverse()    
    return answer

# 2안
def solution(n):
    answer = []
    a = str(n)
    for i in range(len(a)):
        value = int(a[len(a)-1-i])
        answer.append(value)  
    return answer

 

문제 설명에 맞는 코드를 작성하기 위해서 총 2안으로 작성했습니다!

 

#  1안 풀이 설명

# [ 문제 풀이 설명 ]

 

문제와 입출력 예시를 보며, 입력된 n의 길이만큼 반복문 실행이 필요하겠다고 생각을 했습니다!

 

n의 길이를 구하기 위해 n을 문자형으로 변형을 시켜주고,

 

len(a)를 통해 길이를 구하여 반복문을 실행해 주었습니다.

 

그리고 문자열 a의 0번째 index부터 n-1번째 index에 있는 값을 불러와 

 

int()를 통해 정수로 변형시켜줘서 answer에 append() 해주었습니다.

 

이후 reverse()를 통해 배열의 값을 역순으로 정렬했습니다!

 

n=12345를 예로 들어볼게요!

 

n=12345를 문자형으로 변형한 변수 a='12345'

 

'12345'의 길이는 5자리이므로 i는 0부터 4까지 반복을 해주고

 

i가 0인 경우 '12345'의 0번째 index 값은 '1' > int()를 통해 정수로 변환 > 1

i가 1인 경우 '12345'의 1번째 index 값은 '2' > int()를 통해 정수로 변환 > 2

 

i가 2인 경우 '12345'의 2번째 index 값은 '3' > int()를 통해 정수로 변환 > 3

i가 3인 경우 '12345'의 3번째 index 값은 '4' > int()를 통해 정수로 변환 > 4

i가 4인 경우 '12345'의 4번째 index 값은 '5' > int()를 통해 정수로 변환 > 5

 

answer = [1,2,3,4,5]

 

위 배열을 reverse()를 통해 역순으로 정렬

 

answer = [5, 4, 3, 2, 1]

 

이후 answer 변수를 return 해주었습니다!

 

# 1안

def solution(n):
    # 빈 answer 배열 정의
    answer = []
    # 입력된 n을 문자열로 변환
    a = str(n)
    # a의 길이만큼 반복문 실행
    for i in range(len(a)):
       # 문자열 a의 i번째 index에 존재하는 값을 value 변수에 할당
        value = int(a[i])
        # answer 변수에 append()
        answer.append(value)
    # reverse()를 통한 역순 정렬
    answer.reverse()    
    return answer

 

#  2안 풀이 설명

# [ 문제 풀이 설명 ]

 

2안의 코드는 1안의 코드와 동일한 내용이에요!

 

reverse() 함수를 사용하는 것 대신에, 

 

index의 역순부터 answer에 append()하는 코드입니다

 

n=12345를 예로 들어볼게요!

 

n=12345를 문자형으로 변형한 변수 a='12345'

 

'12345'의 길이는 5자리이므로 i는 0부터 4까지 반복을 해주고

 

i가 0인 경우 '12345'의 4번째 index 값은 '5' > int()를 통해 정수로 변환 > 5

i가 1인 경우 '12345'의 3번째 index 값은 '4' > int()를 통해 정수로 변환 > 4

i가 2인 경우 '12345'의 2번째 index 값은 '3' > int()를 통해 정수로 변환 > 3

i가 3인 경우 '12345'의 1번째 index 값은 '2' > int()를 통해 정수로 변환 > 2

i가 4인 경우 '12345'의 0번째 index 값은 '1' > int()를 통해 정수로 변환 > 1

 

answer = [5,4,3,2,1]

 

이후 answer 변수를 return 해주었습니다!

 

# 2안

def solution(n):
    # 빈 answer 배열 정의
    answer = []
    # 입력된 n을 문자열로 변환
    a = str(n)
    # a의 길이만큼 반복문 실행
    for i in range(len(a)):
        # 문자열 a에서 뒤의 index의 값부터 순서대로 불러와 정수로 변환
        value = int(a[len(a)-1-i])
        # answer 변수에 append()
        answer.append(value)  
    return answer

 


 

4. 문제 풀이 후기

이번 문제는 자연수 n을 입력받아,

 

각 자리의 숫자를 뒤집어 배열로 저장하는 문제였습니다.

 

지금 풀고 있는 문제들은 계속 반복문과 append()로 배열에 저장하는 것이 특징이고

 

다른 문제와의 차별점은 reverse() 함수를 활용해 배열을 역순으로 정렬한 부분과

 

문자열의 뒤 index()부터 호출을 하여 원소를 저장한 것이 특징입니다!

 

이 외에는 어려운 부분이 없어서 제가 따로 코멘트할 것은 없습니다!

 



이번 포스팅은 프로그래머스에 있는

 

python을 이용한 코딩테스트 문제를 풀어보았습니다!

 

너무 쉬운 부분만 있다면 이번 포스팅처럼  다른 풀이 방법도 설명하면서 진행하려고 해요!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

LIST