You will be fine

<Algorithm> 96. 완주하지 못한 선수(프로그래머스)

by BFine
반응형

1. 완주하지 못한 선수(프로그래머스)

  • 문제해결능력 필요로 하는 문제

  • 처음 접근을 List에서 요소를 삭제하는 방향으로 가려고 했는데 remove로 할 경우 중복요소 모두 사라진다

  • 또한 index는 list가 지워져 list 크기가 달라지기 때문에 문제가 발생했다.

  • 그래서 하나 차이나는 부분을 이용해서 문제를 접근했다.

  • Lambda Stream API로 푸는데 익숙하지가 않아서 조금 오래 걸렸다. 하지만 확실히 코드가 간결해지는 것을 느낄 수 있었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.Arrays;
import java.util.Optional;
import java.util.stream.IntStream;
 
public class Solution {
    
    public String solution(String[] participant, String[] completion) {
        
        Arrays.sort(participant);
        Arrays.sort(completion);
        /******************************
         * 한명만 완주를 못한 것이기 때문에
         * 정렬을 해서 동등비교를 한다
         * 이때 중복일 경우는 매치가 되지 않기 때문에
         * 첫번째 매치가 되지 않는 경우가 답이된다.
         * 매치가 되지않는 경우가 없는 경우는
         * 제일 마지막번째가 답이된다. 
         *******************************/
        Optional<String> res=IntStream.range(0, completion.length)
                .filter(i->!completion[i].equals(participant[i]))
                .mapToObj(i->participant[i])
                .findFirst();
        
        if(!res.isPresent()) {
            return participant[participant.length-1];
        }
        return res.get();
    }
    
}
 
cs


참고 & 출처  




반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기