티스토리 뷰

 

# 카운트 업

 

정수 start_num와 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.


제한사항
0 ≤ start_num ≤ end_num ≤ 50


입출력 예 #1
3부터 10까지의 숫자들을 담은 리스트 [3, 4, 5, 6, 7, 8, 9, 10]를 return합니다.

 

 

나의 답

class Solution {
    public int[] solution(int start_num, int end_num) {
        int size = end_num - start_num +1;
        int[] answer = new int[size];
        for(int i=0; i<size; i++){
            answer[i]= start_num++;
        }
        
        return answer;
    }
}

 

size로 배열의 크기를 지정한 후

for문을 사용하여 size크기만큼 실행한다. 이때 start_num++을 사용하여 for문이 한번 실행한 후 start_num이 1 증가되도록 설정해주었다.

 

 

 

다른 답

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int start, int end) {
        return IntStream.rangeClosed(start, end).toArray();
    }
}

 

이 코드는 Java의 IntStream을 사용하여 주어진 시작 숫자부터 끝 숫자까지의 숫자를 생성하고 이를 배열로 변환하여 반환하는 방법을 보여줍니다.

여기서 IntStream.rangeClosed(start, end)는 시작 숫자(start)부터 끝 숫자(end)까지의 범위에서 순차적으로 정수 스트림을 생성합니다. 그리고 toArray() 메서드를 사용하여 이를 배열로 변환합니다.

간단히 말하자면, 주어진 범위의 정수를 스트림으로 생성하고, 그 스트림을 배열로 변환하여 반환하는 코드입니다.

 

 

 

 

 

 

 

# 주사위 게임2

 

1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.



제한사항
a, b, c는 1이상 6이하의 정수입니다.



입출력 예 #1

예제 1번에서 세 주사위 숫자가 모두 다르므로 2 + 6 + 1 = 9점을 얻습니다. 따라서 9를 return 합니다.
입출력 예 #2
예제 2번에서 두 주사위 숫자만 같으므로 (5 + 3 + 3) × (52 + 32 + 32 ) = 11 × 43 = 473점을 얻습니다. 따라서 473을 return 합니다.
입출력 예 #3
예제 3번에서 세 주사위 숫자가 모두 같으므로 (4 + 4 + 4) × (42 + 42 + 42 ) × (43 + 43 + 43 ) = 12 × 48 × 192 = 110,592점을 얻습니다. 따라서 110592를 return 합니다.

 

 

class Solution {
    public int solution(int a, int b, int c) {
        int answer = 0;
        
        if(a!=b && b!=c && c!=a){
            answer=a+b+c;
        }
        else if(a==b&&b!=c||a==c&&c!=b||a!=b&&b==c){
            answer = (a+b+c)*(a*a+b*b+c*c);
        }
        else{
            answer=(a+b+c)*(a*a+b*b+c*c)*(a*a*a+b*b*b+c*c*c);
        }
        return answer;
    }
}

 

 

 

 

다른 사람 풀이

class Solution {
    public int solution(int a, int b, int c) {
        int answer = 1;

        int count = 1;
        if(a == b || a == c || b == c) {
            count++;
        }

        if(a == b && b == c) {
            count++;
        }

        for(int i = 1; i <= count; i++) {
            answer *= (pow(a,i)+pow(b,i)+pow(c,i));
        }

        return answer;
    }

    private int pow(int a, int b) {
        if(b == 0) return 1;
        return a * pow(a, b-1);
    }
}

 

이 코드는 세 개의 정수 a, b, c를 인자로 받아서, 이들을 각각의 지수로 사용하여 계산한 결과를 반환하는 함수입니다. 함수의 동작은 다음과 같습니다.

  1. 변수 answer를 1로 초기화합니다.
  2. 변수 count를 1로 초기화합니다. 이 변수는 중복되는 값이 있는지를 나타내는데 사용됩니다.
    • 만약 a와 b가 같거나, a와 c가 같거나, b와 c가 같으면 count를 2로 증가시킵니다.
  3. 만약 a와 b가 같고, b와 c가 같고, a와 c가 같으면 count를 1 증가시킵니다.
  4. 1부터 count까지 반복하는 반복문에서, 각각의 a, b, c에 대해 i번째 지수를 계산하여 answer에 곱합니다.
    • 여기서 pow 함수는 재귀적으로 지수 함수를 계산하는 함수입니다. a의 b제곱을 반환합니다.

이 함수의 목적은 주어진 세 개의 정수를 각각의 지수로 사용하여 계산한 결과를 반환하는 것입니다. 다만, 코드를 간단히 하기 위해 중복되는 값의 유무를 고려하고 있습니다.

 

내가 작성한 코드보다 훨씬 간결하고 속도가 빠르다.

 

 

 

 

 

 

 

# 원소들의 곱과 합

 

정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

제한사항
2 ≤ num_list의 길이 ≤ 101 ≤ num_list의 원소 ≤ 9


입출력 예 #1
모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.

입출력 예 #2
모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.

 

 

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        int sum = 0;
        int mul = 1;
        for(int i=0; i<num_list.length; i++){
            sum += num_list[i];
            mul *= num_list[i];
        }
        
        if(mul<sum*sum){
            answer = 1;
        }
        else{
            answer = 0;
        }
        
        return answer;
    }
}

 

 

 

 

 

'코딩 > 프로그래머스' 카테고리의 다른 글

코딩 기초 트레이닝 #30  (0) 2024.05.14
코딩 기초 트레이닝 #25 ~ 29  (0) 2024.05.09
코딩 기초 트레이닝 #16 ~ 20  (0) 2024.04.24
코딩 기초 트레이닝 #10 ~ 15  (0) 2024.04.23
코딩 기초 트레이닝 #6~9  (0) 2024.04.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday