int to string과, string to int는 것은 생각보다 코딩 테스트에 상당히 자주 보이는 문제입니다. 물론 단독으로 출제되는 경우는 거의 없다시피 하고, 구현 문제의 중간 단계에서 필요한 경우가 왕왕 있습니다. 언젠가 정리해 두려고 했는데, 지금에 와서야 정리하게 되네요. 먼저, string을 int로 바꾸는 것은 Integer의 parseInt로 합니다. string을 long으로 바꾼다면, Long의 parseLong으로 하겠죠. 생각보다 parseXXX를 자주 쓰게 될 겁니다. 역으로, int를 String으로 바꾸기 위해서 Integer의 toString을, long을 String으로 바꾸기 위해서 Long의 toString을 이용합니다. 이것을 그림으로 그려보면 아래와 같아요. 어..
Java 검색 결과
안녕하세요. 오랫만에 뵙겠습니다. 간혹 가다가 백준에서 문제를 풀다 보면, 문자열이 x개 나오면 이 문자열들 사이에 특정 문자를 넣어야 하는 경우가 있습니다. 예를 들어, 테스트 케이스 문제라면 개행 문자를 넣는 경우가 있을 겁니다. python에서는 이러한 기능을 join으로 매우 쉽게 처리할 수 있었어요. 예를 들어, 이런 식으로 쓰면 출력은 어떻게 될까요? 아시다시피 'my name is cho'가 출력이 됩니다. 사용법도 그리 어렵지 않아요. 그냥 Iterable한 객체를 넘겨주면, separator가 element 사이에 끼어들어가 버리게 됩니다. 저 예제에서는 list를 넘겨주었고, Separator로 ' '을 넘겨주었기 때문에, 원소들 사이에 공백이 하나 들어갑니다. 그래서 my name i..
안녕하세요. chogahui05입니다. 최근에 코딩 테스트를 개최하면서, 다중 정렬을 람다로 구현한 풀이를 보고 배울 점이 많다고 느꼈어요. 람다는 정렬할 때도 쓰고, stream에서도 많이 써 먹긴 합니다. 그런데, 이 글에서는 따로 언급해 드리지는 않겠습니다. 대신에, 람다를 이해할 때 필수적으로 이해했으면 좋을만한 apply 메서드만 언급해 보겠습니다. 제가 computeXXX 시리즈를 설명할 때도 언급이 되었습니다. 그러니, 이 포스팅을 보고 오셔도 좋겠네요. [관련글] computeIfPresent에 대해서 알아봅시다. map 인터페이스에 있는 computeIfAbsent와 computeIfPresent를 예로 들어 설명해 보겠습니다. 이 메서드 들을 이해하면, 어느 정도는 람다가 이런 것이구나..
BinarySearch에 대해서 잘못된 부분을 수정하기 위해서, 프로그램을 작성하게 되었습니다. 코드 제너레이터를 이용해서, 게터, 세터, equals, hashCode 등을 자동으로 생성하게 되었습니다. 중요한 부분만 코드로 보도록 하겠습니다. Obj 클래스입니다. binarySearch를 할 때, key가 여러개 나올 때 lower_bound나 upper_bound를 이용할 수 없다고 없다고 하였습니다. 그것이 가능하게 하려면, unique 한 속성으로 떨어트려야 하는데요. 키가 등장한 위치 lo는 unique 합니다. 따라서, (x, lo) 쌍도 unique 할 겁니다. hashCode를 재정의 한 것을 보니까 Objects.hash(x, lo); 가 보이는데요. 이것이 무엇을 하는지는 모르겠지만,..
안녕하세요. 이 글에서는 List의 removeAll 메소드에 대한 질문이 와서 이에 대해 써 보도록 하겠습니다. 콜렉션에 대해서 입문하셨다면, clear와 혼동하기 매우 쉽습니다. 이 둘은 쓰이는 용도가 다릅니다. 어떻게 용도가 다른지, 정확한 복잡도는 어떻게 되는지 언급해 보겠습니다. list에 0부터 99999까지 추가합니다. 다음에, list m에도 0부터 99999까지 추가합니다. 다음에 removeAll 메서드를 호출하였습니다. 그러면 내부적으로 batchRemove 함수를 호출합니다. 일괄 처리할 때 그 batch입니다. 이로 미루어 보았을 때, Collection에 있는 삭제할 원소 하나 하나를 하나의 작업 단위로 보고 처리한다는 말이 되어 버립니다. 즉, 어떤 원소 m개를 삭제하려고 할 ..
최근댓글