프로그래머스 자릿수 더하기 (99클럽 코딩테스트 18일차 TIL)

KIMYEONGJUN·2024년 4월 14일
0
post-thumbnail

목표

하루 하루 문제 푸는게 중요하지 않나 생각된다. 계속 꾸준히 하루에 몇문제씩 푸는게 내 목표이다.

문제

내가 생각했을때 문제에서 원하는부분

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수 만들어라.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 된다.

내가 이 문제를 보고 생각해본 부분

N을 배열로 입력을 받아서 123 으로있으면 [1,2,3] 이런식으로 
그리고 [1,2,3] 배열 순서로 0 1 2 자리수로 더해준다.

코드로 구현

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String[] arr = String.valueOf(n).split("");
        System.out.println(Arrays.toString(arr));
        
        for(String s : arr) {
            answer += Integer.parseInt(s);
        }
        System.out.println(answer);
        return answer;
    }
}

시간복잡도는 O(N)
가장 큰 연산이 배열 순회이고, 이는 n의 자릿수와 동일하므로 전체 시간복잡도는 O(n)이다.

장점
구현이 쉽고 직관적이다.
문자열 처리 기능을 활용할 수 있다.

단점
문자열 변환, split, parseInt 연산이 추가
시간복잡도가 나머지 연산 방식보다 느리다.

왠만하면 다른사람 풀이 안보는데 내가 적용한 코드가 다른사람이 생각했을때 어떤식으로 생각할지 조금 궁금해서 다른사람 풀이를 조금봤다.

가독성은 좋지만 리소스를 잡아먹어서 효율성이 떨어지는 코드라는 소리인데 내가 미쳐 거기까지 생각을 못했다.

마무리

다른사람들의 코드를 본건 오늘이 처음인것같다. 매번 내 코드만 보고 다른 사람이 어떻게 코드를 작성하는지 보지않은 상태에서 공부하다보니깐 내 코드가 효율적인지 아니면 비효율적인지 전혀 생각을 못했었다. 오늘 다른사람들의 의견을 보고 느낀게 조금 많다. 앞으로 될 수 있으면 다른 사람이 어떻게 코드를 작성했는지 보고 생각을 조금 해봐야할것같다.

profile
Junior backend developer

0개의 댓글