프로그래머스 문제풀이 #2

Yullc·2025년 4월 6일
post-thumbnail

1. 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

  • 나의 풀이
class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 1; i <= n; i++) {
            if(n % i == 0) {
                answer += i;
            }
        }
        return answer;
    }
}
  • 약수의 합이니까 처음 든 생각은 약수는 내가 입력한 수를 n이라 하면
    1부터 n까지 수를 하나씩 n%i를 해서 나머지가 0인 수가 약수라고 생각하고 answer에 더해줬어.
  • 이 문제는 쉽다 자존감 올려주기 좋은문제

2. n의 배수 구하기

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

  • 나의 풀이
class Solution {
    public List<Integer> solution(int n, int[] numlist) {
        List<Integer> answer = new ArrayList<>();
        int a = 0;
        for (int i = 0; i < numlist.length; i++) {
            if (numlist[i] % n ==0) {
                a = numlist[i];
                answer.add(a);
            }

        }
        return answer;
    }
}
  • n의 배수를 구하는 문제니까 배열에 들어가있는 숫자들을 for 문을 돌면서 하나씩 비교 해야겠다고 생각했어.

  • 그리고 numlist[i]랑 n이랑 나눠서 나머지의 값이 0 이면 배수라는거 알지??

  • 나는 어떻게 담을까 라고 생각하다가 최근에 ArrayList를 많이 사용해서 ArrayList의 add함수를 사용하기로 결정했어. 확실히 이게 편하네.. ㅎㅎㅎ

3. 자릿수 더하기

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

  • 나의 풀이
 public class Solution {
    public int solution(int n) {
        int answer = 0;
        while(n>0){
            answer += n%10;
            n /=10; 
        }
        return answer;
    }
}
  • 자릿수를 더하는 문제니까 숫자 하나씩 어떻게 나누지?? 라고 생각했는데 예를 들어 1234에서 10으로 나눈 나머지만 구하면 4이고 그럼 10의 로 나눈 몫은 123이잖아.

  • 그래서 answer에는 4를 더해주고 n에는 123을 저장하고 이거를 반복 작업을 하면 ? 다음은 answer에 3 더하고 n에는 12를 저장을 하기때문에 이런식으로 코드를 짜보았다..

4. 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

class Solution {
    public List<Integer> solution(long n) {
        String num = String.valueOf(n);
        List<Integer> list = new ArrayList<>();

        for (int i = num.length() - 1; i >= 0; i--) {
            String str = num.substring(i, i + 1); // i번째 문자 추출
            int answer = Integer.parseInt(str);
            System.out.println(answer);
            list.add(answer);
        }
        return list;
    }
}
  • 나의 풀이

  • 일단 나는 하나씩 잘라서 넣어야 되니까 substring을 사용하고 싶었어. 그런데 substring은 String만 사용할 수 있는거 알지?

  • 그래서 num으로 n값을 String으로 처음에 저장했어.

  • 또 List를 이용해서 풀었는데 for문을 돌 때 str변수를 만들어 i랑i+1값까지 substring을 이용해 값을 집어넣기로 생각했어.

  • 그리고 다시 str을 int로 바꿔서 answer에 저장하고 add를 하면 끝!!

profile
아자아자자

0개의 댓글