본문 바로가기
*Algorithm/Programmers_Level1

[programmers] 프로그래머스 Level1 자연수 뒤집어 배열로 만들기(파이썬 Python)

by codinguser 2020. 8. 31.

프로그래머스
(주)그렙

[programmers] 프로그래머스 Level1 자연수 뒤집어 배열로 만들기

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.

 

 

 

 

프로그래머스 Level1 자연수 뒤집어 배열로 만들기


1) 문제

 

프로그래머스 자연수 뒤집어 배열로 만들기

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

programmers.co.kr


2) 풀이 과정

 

1. 첫번째 12345의 예시로 각각을 리스트로 풀면 좋을것 같다라는 생각을 했다.

 

2. 리스트의 크기만큼 받아서 i값 지정

 

3. 값을 정수로 변환하여  nList에 저장

 

4. reverse()로 뒤집기

 

참고 : sort(reverse=True) 가 아니다. 이 문제는 내림차순이 아님 그냥 뒤집기임


3) 코드

 

Solution 1)

1
2
3
4
5
6
7
8
9
10
def solution(n):
    answer = []
    
    nList = list(str(n))
    
    for i in range(len(nList)):
        nList[i] = int(nList[i])
    nList.reverse()
    
    return nList
cs

 

Solution 2)

1
2
3
4
5
6
7
8
def solution(n):
    answer = []
    
    for i in str(n):
        answer.append(int(i))
    answer.reverse()
    
    return answer
cs

4) 정리 노트

 

제일 쉬운문제인데 시간을 엄청 잡아먹음.

전체 기초틀을 다시 잡아야 겠다는 생각이 든다.

 

    < 전체 구조>

    1) for i in range()

    ㄴ for i in range(a, b)

    ㄴ for i in range(a, b, 증감)

 

    2) for i in [문자열,리스트,튜플]:

 

 

5) 사고 과정


1)

1
2
3
4
5
= 12345
print(n)
 
# 출력
# 12345
cs

 

2) 오류 발생

1
2
3
4
5
6
7
8
9
10
11
12
13
= 12345
= list(n)
print(n)
 
# 오류 발생
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# <ipython-input-50-ca33d8bd74d6> in <module>
#       1 n = 12345
# ----> 2 n = list(n)
#       3 print(n)
 
# TypeError: 'int' object is not iterable
 
cs

 

 

3) 2번에서 int가 반복 객체로 적합하지 않는다고 했으니 그럼 문자겠네? 같은 1이여도 숫자1과 문자1은 다르니까

1
2
3
4
5
6
= 12345
= list(str(n))
print(n)
 
# 출력
# ['1', '2', '3', '4', '5'
cs

 

4)

1
2
3
4
5
6
7
8
9
10
11
12
= 12345
= list(str(n))
for i in range(len(n)):
    print(i)
    
# 출력
# 0
# 1
# 2
# 3
# 4
 
cs

 

5)

1
2
3
4
5
6
7
8
9
10
11
= 12345
 
for i in str(n):
    print(i)
 
# 출력
# 1
# 2
# 3
# 4
# 5
cs

댓글