오늘 한일
-
우아한형제들 코딩테스트를 볼 예정이였으나, 서버상의 문제로 다음 주로 연기 됐다.
-
친구들을 만났다.
-
백준의 백설공주 알고리즘 문제를 자바의 Stream을 이용해서 풀었다.
오늘 느낀점
-
우아한형제들 코딩테스트를 볼 예정이였는데 codility 서버에 문제가 생겨서 시험을 못보게 됐다. 4시간짜리 시험이라 오늘 가장 큰 일정은 이거였는데 갑자기 취소되서 오늘 공부 의욕이 급 사라졌다. 주말이고 하니 오랜만에 친구들을 만나서 놀았다.
-
백설공주 문제를 Stream만을 이용해서 만들어 본 코드다.
public static void main(String[] args) { String peoples = "20\n7\n23\n19\n15\n10\n25\n8\n13"; List<Integer> numbers = Arrays.asList(peoples.split("\n")).stream().map(Integer::parseInt).sorted().collect(Collectors.toList()); solution(numbers); } public static void solution(List<Integer> numbers) { int fakerHeight = numbers.stream().mapToInt(Integer::intValue).sum() - 100; numbers.stream().filter(firstPeople -> !numbers.stream().filter(secondPeople -> firstPeople!= secondPeople).anyMatch(secondPeople -> firstPeople + secondPeople == fakerHeight)).forEach(System.out::println); }
좀 익숙해졌다 싶었는데 생각보다 쉽지 않았다. 그래도 오늘 공부한 덕에 중간처리, 최종처리 개념과 filter(), forEach()는 좀 더 익숙해 진거 같다. 더 개선할 수도 있을거 같은데 현재로서는 이게 최종본이다.
-
친구들을 보러가다 생각난건데, 왜 굳이 이렇게 복잡하게 하나 싶었는데, 그렇게 구현했을때의 몇가지 이점이 생각났다.
public interface State public abstract class EndState implements State class Spare extends EndState
왜 굳이 이렇게 하나 싶었는데, 그렇게 구현했을때의 몇가지 이점이 생각났다.
-
endState를 상속 받는 자식들한테 필요한 메소드를 미리 구현 해둘수 있다.
-
자식들한테 필요한 메소드를 새로 만들고 (예를 들면 getScore()같은)
내가 이전에 여러 조건들로 점수를 획득 하던 부분을 이런식으로 구현 가능할 듯 싶다.
남의 코드를 볼때 좋은점은(특히나 좋은 코드라면) 어떤 의도로 짰는지 생각해보는게 즐겁고, 생각의 폭까지 넓어진다.
-
내일 할일
-
콘솔 볼링 게임 리팩토링
-
프로그래머스 알고리즘 문제 풀기