티스토리 뷰
# 카운트 업
정수 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를 인자로 받아서, 이들을 각각의 지수로 사용하여 계산한 결과를 반환하는 함수입니다. 함수의 동작은 다음과 같습니다.
- 변수 answer를 1로 초기화합니다.
- 변수 count를 1로 초기화합니다. 이 변수는 중복되는 값이 있는지를 나타내는데 사용됩니다.
- 만약 a와 b가 같거나, a와 c가 같거나, b와 c가 같으면 count를 2로 증가시킵니다.
- 만약 a와 b가 같고, b와 c가 같고, a와 c가 같으면 count를 1 증가시킵니다.
- 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