공백으로 구분되는 문자열의 숫자를 최소값과 최대값을 구하는 문제이다.
공백으로 문자열 잘라서 배열에 넣고, 숫자로 변환한다.
최대값과 최소값을 구하는 방법을 알아낸다.
같은 숫자가 2개 주어지면 최소값 최대값은 같다.
String.substring(start) //start위치부터 끝까지 문자열 자르기
String.substring(start,end)//start부터 end전까지 문자열 자르기
Split(,공백 #특수기호등으로 구분해서 나중에 값 꺼내기 좋은 좋은 메소드)
ex)
String str = "동해물과 백두산이 마르고 닭도록"
String[] array = str.split(" ");
//출력
for(int i : array){
System.out.println(array[i]);
}
Integer.parseInt("문자열");
라고 간단하게 생각했는데... 생각해보니 배열로 바뀌어있다는 것!!!
Strign 배열을 int 배열로 변환
Streams-자바8애서 추가한 Streams은 람다를 활용할 수 있는 기술 중하나. 자바8이전 버전에서는 배열 또는 컬렉션 인스턴스를 다루는 방법은 for 또는 foreach문을 돌면서 요소 하나씩을 꺼내서 다루는 방법이었다. 간단한코드일 경우 상관 없지만 복잡하고 양이 많으면 여러 로직이 섞이고, 루프를 여러번 도는 단점이 생긴다.
스트림은 '데이터의흐름'이다. 배열 또는 컬렉션 인스턴스에 함수 여러개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다. 또한 람다를 이용하여 코드의 양을 줄이고 간결하게 표현할 수 있다. 즉, 배열과 컬렉션을 함수형으로 처리할 수 있다.
또하나의 장점으로는 간단하게 병렬처리(multi-threading)가 가능하다는 점이다. 하나의 작업을 둘이상의 작업으로 잘게 나눠서 동시에 진행하는 것을 병렬처리라고 한다.
메소드명
설명
of
지정된 값으로부터 Stream 생성
count
Stream의 요소의 수를 반환
distinct
Stream의 요소의 중복 제거
forEach
Stream의 요소에 대한 반복
filter
Stream의 요소에 대한 필터링
concat
2개의 Stream을 연결
map
Stream의 요소를 변환
mapToDouble
Stream의 요소를 double형으로 변환해 DoubleStream 반환
mapToInt
Stream의 요소를 int형으로 변환해 IntStream으로 반환
mapToLong
Stream의 요소를 long형으로 변환해 LongStream으로 반환
floatMap
Stream의 요소를 변환하고 요소를 정리
allMatch
Stream의 모든 요소가 조건을 충족하는지 확인
anyMatch
Stream의 요소가 1개라도 충족하는지 확인
noneMatch
Stream의 모든 요소가 충족하지 않는지 확인
reduce
Stream의 요소 집계
sum
Stream의 요소 합계
sorted
Stream의 요소 정렬
collect
Stream 요소의 집계 처리와 컬렉션 변환 등
toArray
Stream을 배열로 변환
iterate
무한값을 반환하는 Stream 생성
limit
지정한 건수만큼 반환
parallelStream
순차처리 Stream을 병렬 처리할 수 있는 Stream을 구함
sequential
병렬 처리가 가능한 Stream을 순차처리 Stream으로 구함
Stream 형태를 배열로 변환 할 경우, toArray로 쓰면됨.
IntStream으로 되어 있으므로, toArray를 할 경우 int형태의 배열이 생성 된다.
String[] strings = {"1", "2", "3"};
int[] nums = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();
String[] strings = {"1", "2", "3"};
int[] nums = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
public class 최대값과최솟값 {
public String solution(String s) {
String answer = "";
String[] array = s.split(" ");
int[] nums = Arrays.stream(array).mapToInt(Integer::parseInt).toArray();
int min = nums[0];
int max = nums[0];
Arrays.sort(nums);
min=nums[0];
max=nums[nums.length-1];
String min1 = Integer.toString(min);
String max2 = Integer.toString(max);
answer = min1+" "+ max2;
return answer;
}