정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100
입출력 예
num1 num2 result
3 2 1500
7 3 2333
1 16 62
class Solution {
public int solution(int num1, int num2) {
double answer = (double) num1 / num2;
answer = answer * 1000;
return (int)answer;
}
}
형변환 문제로 헷갈리기 쉬운 문제였다. answer가 실수로 계산되는 것과 1000을 곱해 다시 정수형으로 바뀌는 걸 잘 생각해야 한다. 그러다 다른 분이 풀어 놓은 정답을 보곤 머리가 잠시 띵해졌다.
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
return num1 * 1000 / num2;
}
}
왜 이런 생각을 못했을까?
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ numbers의 원소 ≤ 1,000
1 ≤ numbers의 길이 ≤ 100
정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력 예
numbers result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 5.5
[89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 94.0
class Solution {
public double solution(int[] numbers) {
double answer = 0;
for(int i=0; i<numbers.length; i++){
answer += numbers[i];
}
answer = answer / numbers.length;
return answer;
}
}
length는 배열의 길이를 알고자 할 때 사용되는 함수다.
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
average()와 orElse(0)는 스트림을 활용하여 평균 값을 계산하고 반환할 때 유용한 명령어이다.
stream()은 데이터의 연속적인 흐름을 나타내는 기능이며 컬렉션(Collection)과 배열 등의 데이터 소스로부터 데이터를 받아들이고, 다양한 중간 연산과 최종 연산을 통해 데이터를 처리하는 기능을 제공한다.
1.데이터 소스: 스트림은 컬렉션, 배열, I/O 채널 등 다양한 데이터 소스로부터 데이터를 받아들일 수 있다.
2.연속적인 흐름: 스트림은 데이터를 순차적으로 한 번에 하나씩 처리합니다. 이는 데이터를 메모리에 모두 로드하지 않고 필요한 데이터만 처리할 수 있게 해준다.
3.중간 연산: 스트림은 중간 연산을 통해 데이터를 변환, 필터링, 정렬 등의 작업을 수행할 수 있습니다. 이러한 중간 연산은 지연(lazy) 연산이며, 최종 연산이 호출될 때에만 실제로 수행된다.
4.최종 연산: 스트림은 최종 연산을 통해 데이터를 처리하고 결과를 반환합니다. 최종 연산은 스트림 파이프라인을 종료시키는 역할을 수행하며, 스트림의 요소를 수집하거나 결과를 반환하는 역할을 할 수 있다.
5.내부 반복: 스트림은 내부적으로 반복을 처리하므로 개발자가 직접 반복 코드를 작성할 필요가 없다.
1.스트림 생성: 데이터 소스로부터 스트림을 생성 후 Stream 인터페이스의 정적 메서드를 사용하거나, 컬렉션의 stream() 메서드를 호출하여 스트림을 생성할 수 있다.
2.중간 연산: 생성된 스트림에 대해 중간 연산을 적용한다. 이 단계에서 데이터를 변환, 필터링, 정렬 등의 작업을 수행할 수 있고, 중간 연산은 여러 개를 연결하여 체인 형태로 작성할 수 있다.
3.최종 연산: 최종 연산을 통해 스트림의 요소를 처리하고 결과를 반환한다. 이 단계에서 스트림의 파이프라인이 종료되며, 결과를 수집하거나 반환할 수 있다.