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

알고리즘(JadenCase 문자열 만들기, N개의 최소공배수) - Java

by uyoo 2020. 5. 5.

[JadenCase 문자열 만들기]

 

  • 입력된 문자를 모두 소문자로 변경한다
  • 첫 번째 글자를 대문자로 바꾼 뒤, 다음 문자부터 순서대로 로직을 진행한다
  • 현재 글자를 기준으로
    • 이전의 문자가 공백이라면 -> 현재 글자를 대문자로 변경한다 
    • 이전의 문자가 글자라면 -> 현재 글자를 그대로 받는다

 

// JadenCase 문자열 만들기
public class Problem_JadenCase {

    public static void main(String[] args) {
        String s = "3people unFollowed me   ";
        String answer = solution(s);
        System.out.println(answer);
    }

    public static String solution(String s) {
        StringBuilder sb = new StringBuilder();

        s = s.toLowerCase();
        sb.append(s.substring(0,1).toUpperCase());
        for(int i=1; i<s.length(); ++i) {

            //이전의 문자가 공백이라면
            if(s.substring(i-1, i).equals(" ")) {
                sb.append(s.substring(i, i+1).toUpperCase());
            }

            else sb.append(s.substring(i, i+1));
        }

        return sb.toString();
    }
}

 

 

 


[N개의 최소공배수]

 

  • 두 수에 대한 최소 공배수를 구하고(lcm), 구해진 lcm과 그 다음 숫자의 최소 공배수를 구한다
  • 마지막 숫자까지 로직을 반복한다
  • a * b = 최소 공배수(lcm) * 최대 공약수(gcd)

 

// N개의 최소공배수
public class Problem_LCM {

    public static void main(String[] args) {
        int[] arr = {2,6,8,14};
        int answer = solution(arr);
        System.out.println(answer);
    }

    public static int solution(int[] arr) {
        int lcm = arr[0];
        for(int i=1; i<arr.length; ++i) {
            lcm = getLcm(lcm, arr[i]);
        }

        return lcm;
    }

    private static int getLcm(int a, int b) {
        return (a * b) / getGcd(a, b);
    }

    private static int getGcd(int a, int b) {
        if(a % b == 0) {
            return b;
        }
        return getGcd(b, a%b);
    }
}