본문 바로가기
Algorithm/Problem_프로그래머스

프로그래머스(약수의 합, 이상한 문자 만들기, 자릿수 더하기, 자연수 뒤집어 배열로 만들기) - Java

by uyoo 2020. 5. 29.

[약수의 합]

https://programmers.co.kr/learn/courses/30/lessons/12928

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

* 로직

  • 1부터 n까지 반복문을 돌려 나누어 떨어지는 몫들을 answer에 누적해준다
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;
    }
}

 

 

[이상한 문자 만들기]

https://programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr

 

* 로직

  • s길이만큼 탐색하면서
  • 단어의 인덱스(idx)가 짝수라면 -> 대문자
  • 홀수라면 -> 소문자
  • 만약 공백을 만나면 새로운 단어기 때문에 idx=0으로 초기화한다
class Solution {
    public String solution(String s) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        int idx = 0;
        for(int i=0; i<s.length(); ++i) {
            String word = s.substring(i, i+1);
            if(word.equals(" ")) {
                idx = 0;
                sb.append(word);
                continue;
            }
            if(idx%2 == 0) sb.append(word.toUpperCase());
            else sb.append(word.toLowerCase());
            idx++;
        }

        return answer = sb.toString();
    }
}

 

 

[자릿수 더하기]

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

 

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String num = String.valueOf(n);
        for(int i=0; i<num.length(); ++i) {
            answer += Integer.parseInt(num.substring(i, i+1));
        }

        return answer;
    }
}

 

 

[자연수 뒤집어 배열로 만들기]

 

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

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

programmers.co.kr

 

* 로직

  • 문자열로 변환한 뒤, 거꾸로 배열에 다시 넣어준다
import java.util.ArrayList;

class Solution {
    public int[] solution(long n) {
        int[] answer = {};
        String num = String.valueOf(n);
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=num.length()-1; i>=0; --i) {
            list.add(Integer.parseInt(num.substring(i, i+1)));
        }
        answer = new int[list.size()];
        for(int i=0; i<list.size(); ++i) {
            answer[i] = list.get(i);
        }

        return answer;
    }
}