[20221231] 코딩테스트 스터디

6720·2022년 12월 31일
post-thumbnail

👨‍🏫 이번 목표

프로그래머스 코딩테스트 입문 Java로 Day 11 수학, 반복문 풀기

📒 문제 풀이 (Day 11 수학, 반복문)

주사위의 개수

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n ≤ box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

입출력 예

boxnresult
[1, 1, 1]11
[10, 8, 6]312
class Solution {
    public int solution(int[] box, int n) {
        int answer = 0;
        answer = (box[0]/n) * (box[1]/n) * (box[2]/n);
        
        return answer;
    }
}

합성수 찾기

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 100

입출력 예

nresult
105
158
class Solution {
    public int solution(int n) {
        int answer = 0;
        int count = 0;
        for (int i = 2; i <= n; i++) {
            count = 0;
            for (int j = i; j > 0; j--) {
                if (i % j == 0) count++;
            }
            if (count >= 3) answer++;
        }
        return answer;
    }
}

최댓값 만들기(1)

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 0 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers의 길이 ≤ 100

입출력 예

numbersresult
[1, 2, 3, 4, 5]20
[0, 31, 24, 10, 1, 9]744
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int max = 0;
        for (int i = 0; i < numbers.length-1; i++) {
            if (numbers[i] * numbers[i+1] > max) max = numbers[i] * numbers[i+1];
        }
        answer = max;
        
        return answer;
    }
}

팩토리얼

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.

  • i! ≤ n

제한사항

  • 0 < n ≤ 3,628,800

입출력 예

nresult
362880010
73
class Solution {
    public int solution(int n) {
        int answer = 0;
        int factorial = 1;
        for (int i = 1; i <= 10; i++) {
            factorial *= i;
            if (factorial <= n) answer = i;
        }
        return answer;
    }
}

✨ 후기

1) 하루치만 푸니깐 여유롭고 기분이 좋다!

2) 기록표

profile
뭐라도 하자

0개의 댓글