171022-TIL

Reading time ~1 minute

오늘 한일

오늘 느낀점

  • 어제 새벽에 자기 전에 Stream을 이용한 백설공주 풀이 코드를 조금 더 손을 봤다.

    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      List<Integer> peoples = new ArrayList<>();
      for (int i = 0; i < 9; i++)
        peoples.add(sc.nextInt());
      peoples.stream().sorted()
          .filter(people -> !peoples.stream().filter(secondPeople -> people != secondPeople)
              .anyMatch(secondPeople -> people + secondPeople == peoples.stream()
              .mapToInt(Integer::intValue).sum() - 100)).forEach(System.out::println);
    }
    

    손을 본 방향은 코드량을 줄여서 숏코딩 순위권에 들기였는데 위의 코드로 2등을 했다.(1등은 저 코드에서 변수명을 a,b 같은 형태로…. 한 내 코드) 그건 그렇고 숏코딩을 하다보니까 변수를 만들고 재활용 하는 것에 대해 좀 더 깊이 생각해 볼 수 있었다.

  • 위의 Stream이야 억지로 푼 문제여서 한눈에도 안들어 오고 작성하는 것도 힘들었는데 오늘 푼 다른 문제 중

    for (int i = 0; i < size; i++) {
    			answer += A[i] * B[size - 1 - i];
    	}
    
    answer = IntStream.range(0, size).map(index -> A[index] * B[size - 1 - index]).sum();
    

    이처럼 간단한 문제는 수월하게 작성하게 된거 같다. 확실히 요 몇일 Stream을 많이 사용해봤는데 잘만 사용하면 불필요한 코드량도 줄고 가독성에서도 큰 이점이 있을거 같아 매력적이다. 익숙해진거 같긴해도 아직 모르는 부분이 너무 많은데 Stream의 학습 비용이 크다는게 어떤건지 알 것 같다.

  • 볼링을 많이 볼까 하다가 Stream을 좀더 사용하고 싶어서 조금은 쉬었다.

  • 경기창조혁신센터에서 공부하다가 중간에 집중이 잘 안되서 잠깐 쉴려는 타이밍에 인프런 대표님을 만났다. 열심히 하는 다른 사람을 보니 자극이 되서 다시 집중 해서 공부를 했다. 덜도 말고 더도 말고 내 노력하는 사람의 롤 모델인 형만큼 할 수 있게 노력하자.

내일 할일

  • 콘솔 볼링 게임 리팩토링

  • 포비의 Stream 강의