🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12931
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 문제설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를 들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
💡 제한사항
n은 100,000,000 이하인 자연수입니다.
📚 입출력 예
n | answer |
123 | 6 |
987 | 24 |
💻 소스 코드
public class Solution {
public int solution(int n) {
int answer = 0;
while(n > 0) {
answer += n % 10;
n = n / 10;
}
return answer;
}
}
주어진 코드는 주어진 정수 n의 각 자릿수를 더하여 합을 반환하는 함수입니다.
코드의 동작을 다음과 같이 설명할 수 있습니다.
- 합계를 저장할 변수 answer를 0으로 초기화합니다. 이 변수는 각 자릿수를 더한 합을 나타냅니다.
- while 루프를 사용하여 n이 양수인 동안 반복합니다.
- 각 반복에서, n을 10으로 나눈 나머지를 구하여 현재 자릿수를 얻습니다. n % 10 연산을 통해 가장 오른쪽 자릿수를 추출합니다.
- 추출한 자릿수를 answer에 더합니다. 이렇게 하면 현재 자릿수를 합산합니다.
- 다음으로, n을 10으로 나누어서 다음 자릿수로 이동합니다. 예를 들어, n이 12345라면 첫 번째 반복에서 5를 추출한 후 n은 1234가 됩니다.
- n이 더 이상 양수가 아니면 , 루프가 종료되고 answer에는 각 자릿수의 합이 저장됩니다.
- 마지막으로, answer를 반환하여 결과를 출력합니다.
이 코드는 n의 각 자릿수를 추출하고 더하는 방식으로 동작하며, 간단하고 효율적입니다.
시간 복잡도
위 코드는 n의 자릿수에 비례하는 반복 작업을 합니다. n의 자릿수가 k라고 가정하면, while 루프는 k번 반복됩니다. 반복문 내에서 수행되는 모든 연산은 상수 시간에 따라 수행되기 때문에 이 코드의 시간 복잡도는 O(k)입니다.
공간 복잡도
그리고 사용된 공간이 상수이기 때문에, answer 변수 하나와 몇 개의 정수 변수(n, k)를 사용하므로 공간 복잡도는 O(1)입니다. 입력값 n의 크기와 관계없이 항상 일정한 메모리 공간을 사용합니다.
이 코드는 입력값 n의 자릿수에 따라 선형적으로 증가하는 시간 복잡도와 상수 공간 복잡도를 가지고 있습니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 정수 제곱근 판별 - Java (0) | 2023.11.27 |
---|---|
[프로그래머스] Lv.1 문자열 내 p와 y의 개수 - Java (0) | 2023.11.25 |
[프로그래머스] Lv.1 자연수 뒤집어 배열로 만들기 - Java (0) | 2023.11.23 |
[프로그래머스] Lv.1 문자열을 정수로 바꾸기 - Java (0) | 2023.11.22 |
[프로그래머스] Lv.1 x만큼 간격이 있는 n개의 숫자 - Java (0) | 2023.11.21 |