가희배 5회 코딩테스트가 4월 2일에 열렸습니다. 제가 플레 이상으로 예측한 문제도 있었지만, 골드 정도로 예측했는데 실제로 까 보니 플레였던 문제가 있었습니다. 그 문제에 이어서 또 당한 셈인데요. 이 문제가 어려웠던 이유는 2가지가 있습니다. 카카오 기출 문제를 3개나 섞었다. 그리고, 이 문제에 jpop 이랑 kpop이 상당히 많이 들어가면서 지문 자체가 어마어마하게 길었다. 이 2가지가 있겠습니다. 이것은 가희와 코드도 마찬가지입니다. 후자는 사전 지식이 없으면 해석하는 데 시간이 구현시간보다 더 걸렸을거고 전자는 구현량이 생각보다 있었습니다. 문제에서 요구하는 것은 2가지입니다. lru, 가장 가까운 cache 찾기, 엄청나게 긴 지문과 이상하게 jpop과 kpop이 들어간 예제 해석. 이 중 ..
Java 검색 결과
java에는 stack 클래스가 있습니다. 스택은 마지막에 들어온 원소가 먼저 빠져나가는 것으로 유명한 자료구조입니다. 계산기 같은 것을 구현할 때 많이 쓰이기도 합니다. 백준 문제를 풀다 보면 간혹 가다 쓰일 때가 있습니다. 간단한 예제를 하나 보겠습니다. 위 예제는 0부터 4까지의 수를 넣은 다음에, 맨 위에 있는 원소를 peek으로 가져오기만 합니다. 다음에, pop으로 맨 위에 있는 원소를 가져오면서 제거합니다. peek 메서드의 설명을 보면, 보다 명확합니다. 스택에서 원소를 제거하지 않고 stack의 맨 위에 있는 원소를 가져온다. 반면에 pop은 제거까지 합니다. 비어있는지 검사하기 위해서 empty를 호출했습니다. 다음에, 원소를 넣기 위해 push를 썼습니다. 나중에 넣은 4가 먼저 빠지..
백준을 java로 푸시다 보면, 파일로 입력받고 싶습니다. 결과를 파일로 출력하고 싶습니다. 이런 경우가 정말 많습니다. 그리고 문제 출제를 하다 보면, 명령어 형식으로 프로그램을 실행해야 할 경우가 왕왕 있습니다. 어떻게 해야 하는지 간단하게 알아보겠습니다. intellij 22.03 버전으로 실습했음을 유념해 주시면 되겠습니다. 먼저 src 폴더에 들어가 보겠습니다. 이 폴더에는 Main.java가 있습니다. 새로운 객체 A를 생성한 다음에, a의 내용을 출력합니다. 다음 A.java를 보겠습니다. 여기에는 그냥 A 객체를 출력하라 했을 때 a = {a의 값} 형태로 출력하게 하는 toString만 재정의 되어 있습니다. Run/Debug Configurations에 들어갑니다. Build and r..
클린 코드 예외 처리 부분을 보다가 이런 문구를 보게 되었습니다. 정상 흐름을 정의해라. 처음에는 이 말이 무슨 뜻인지 잘 몰랐습니다. 곰곰히 생각해 보니, 이펙티브 자바에서도 비슷한 이야기가 있었는데요. 예외는 예외 상황에서만 사용하라는 것이였습니다. 아래 예제는 너무나도 유명한 예제일 겁니다. 먼저, 길이가 5인 ArrayList를 생성합니다. 그리고 0부터 4까지 넣었습니다. 다음에, 9 ~ 12번째 줄에서, 리스트에 있는 모든 원소를 순회하게 됩니다. 그리고 foo 메서드를 실행합니다. for loop를 도는데, OutOfBound 에러가 뜨는 경우에, 에러 로그를 남기고 종료합니다. foo 메서드를 봅시다. 이 메서드는 0 이상 6 미만의 정수를 뽑습니다. 0, 1, 2, 3, 4, 5를 뽑는다..
안녕하세요. 이번 시간에는 java stream의 filter에 대해 알아봅시다. 먼저, filter는 stream을 리턴하는데요. predicate에 match가 되는 원소들로 이루어진 무언가를 리턴합니다. 조건에 매치되는 필터를 적용한 무언가를 리턴한다. 정도로 생각하시면 편할 듯 싶어요. 예제를 하나씩 보겠습니다. 7번째 줄부터 11번째 줄까지 봅시다. 보시면, mapToInt로 들어오는 stream으로부터, valueOf를 적용하는 Intstream을 리턴해요. 다음에, 필터를 태우는데요. k -> k%2 != 0인 걸로 보아서는 홀수만 뽑아오겠다는 필터임을 알 수 있어요. 그리고 boxed는 박싱을 하는 stream을 리턴해요. 최종 연산으로 toList를 호출하는데요. 결과를 List로 뽑아옵..
최근댓글