프로그래머스 (최대값과최솟값_JAVA)

김승연·2021년 2월 14일
0

알고리즘스터디

목록 보기
2/11

문제설명

공백으로 구분되는 문자열의 숫자를 최소값과 최대값을 구하는 문제이다.

문제풀이방법

공백으로 문자열 잘라서 배열에 넣고, 숫자로 변환한다.
최대값과 최소값을 구하는 방법을 알아낸다.
같은 숫자가 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;
    }
 
 
profile
Doing nothing cause nothing to happen.

0개의 댓글