[연습문제] 자연수 뒤집어 배열로 만들기
2024. 11. 14. 18:00ㆍ입문문제
https://school.programmers.co.kr/learn/courses/30/lessons/12932
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예
| n | return |
| 12345 | [5,4,3,2,1] |
주어진 자연수의 각 자릿수를 뒤집어서 배열로 저장하는 문제입니다.
C언어에서 이 문제를 푸는 방법은 이전의 자릿수 더하기 문제와 동일한 방법을 사용하면 될 것 같습니다.
12345를 10으로 나누어 나머지 5를 저장하고, 1234는 다시 반복문으로 들어가 하나씩 추출하는 거죠.
파이썬에서도 마찬가지로 문자열로 변환한 뒤, 정수형으로 저장하면 될 것 같습니다.
다만 리스트는 reverse 함수를 사용해 뒤집는 것이 가능하니, 이 부분은 편하게 구현할 수 있습니다.
정답 코드를 작성해보겠습니다.
1. C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(long long n) {
// n을 저장할 변수 long long sN
long long sN = n;
// 자릿수를 구할 size
int size = 0;
// sN이 몇 자리인지 구합니다.
while (sN > 0) {
size++;
sN /= 10;
}
// 자릿수에 맞게 answer을 선언합니다.
int* answer = (int*)malloc(sizeof(int) * size);
// sN을 다시 n으로 초기화합니다.
sN = n;
// 자릿수까지 answer에 반복해서 추가해줍니다.
for (int i=0; i<size; i++) {
answer[i] = sN % 10;
sN /= 10;
}
// answer을 반환합니다.
return answer;
}
2. 파이썬
def solution(n):
# n을 문자열로 변환한 뒤, 리스트에 정수형으로 저장합니다.
answer = [int(i) for i in str(n)]
# answer 리스트를 뒤집습니다.
answer.reverse()
# answer을 반환합니다.
return answer
10으로 나눈 나머지를 배열에 바로 삽입하면 된다는 걸 알면 편하게 풀 수 있습니다.
'입문문제' 카테고리의 다른 글
| [연습문제] 정수 제곱근 판별 (0) | 2024.11.18 |
|---|---|
| [연습문제] 정수 내림차순으로 배치하기 (1) | 2024.11.16 |
| [연습문제] 자릿수 더하기 (0) | 2024.11.13 |
| [연습문제] 이상한 문자 만들기 (0) | 2024.11.12 |
| [연습문제] 약수의 합 (0) | 2024.11.11 |