반응형
문제링크 🚩 https://www.acmicpc.net/problem/1305 1305번: 광고 세준이는 길 한가운데에서 전광판을 쳐다보고 있었다. 전광판에는 광고가 흘러나오고 있었다. 한참을 전광판을 쳐다본 세준이는 이 광고가 의미하는 것이 무엇인지 궁금해지기 시작했다. 전광 www.acmicpc.net 📕 문제 접근 📕 - 해당 문제도 KMP 알고리즘을 사용한다(?). - 개인적인 생각으로는 KMP를 위한 table만 설계하면 끝난다고 생각하여 반쪽짜리 KMP 느낌이 든다. 포인트 1) 광고 문자열은 무한히 반복한다. 2) 무한히 반복하는 문자열 중 일부분만 확인하다. 3) 그광고가 될 수 있는 문자열(무한히 반복하는 문자열)이 가능한 경우 중 가장 짧은 문자열의 길이를 구한다. 문자열에서 접두사..
문제링크 🚩 https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m www.acmicpc.net 📕 문제 접근 📕 - 가장 이상적인 KMP문제인 것 같다 - 접미사와 접두사가 같은 영역을 찾기 위한 table을 만들고 - 이를 KMP 알고리즘에 대입하여 해결하면 되는 문제다 - KMP 알고리즘은 해당 포스팅에 자세하게 정리해뒀으니 참고 바란다. https://security-gom.tistory.com/36 KMP -JAVA KMP Algorithm : 문자열 검색 알고..
KMP Algorithm : 문자열 검색 알고리즘 💡 **특정한 글이 있을 때 그 글 안에서 하나의 문자열을 찾는 알고리즘. 워드 파일 또는 웹 브라우저 DB에서 문자열을 검색할 때 패턴 매칭 알고리즘을 사용하여 검색 결과를 표시한다.** 1. 단순 문자열 알고리즘 가장 간단한 문자열 매칭 알고리즘으로, 말 그대로 하나씩 확인하는 방법을 사용한다. 검색할 문자열 : ABDEGH 찾는 문자열 : DE 가장 앞 부분부터 찾는 문자열이 매칭될 때까지 탐색을 시작한다. 매칭이 이루어지지 않았다면 한 칸씩 옆으로 이동시킨다. 매칭이 이루어졌으면 탐색을 종료한다. 위와 같은 예시가 아닌, “A B A C A A B A”를 검색하는 패턴이 “A B A C A B”인 경우에서는, 불필요한 연산이 다시 진행되는 경우도 ..
문제링크 🚩 https://programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📕 문제 접근 📕 잘 못 된 접근 : // 모든 수를 낮게 만드는게 이득인가? // 7 -> 1 3 3 -> 18 // 2, 2, 3 -> 4 + 4 + 9 => 17 // 모든 수를 가장 낮게 만드는게 이득 // 배열을 순회하기에는 시간이 부족함 // 그럼 어떤 방법으러 해결해야하는가? // 전부다 더하고 n을 빼고 수를 나눈다면? => 문제 발생 그럼 2, 1, 2 에 n이 1 인경우 4가..
빌더 패턴 객체의 생성을 가독성 있게 만들고, 여러 개의 매개변수를 갖는 생성자를 피하며, 선택적인 매개변수를 다루기 위해 사용되는 디자인 패턴 사용하는 이유 일반적으로 매개변수를 가진 생성자를 이용하기 위해서 매개변수의 순서를 기억하고 전달해야하는 불편함이 존재했음, 일부 매개변수가 선택적이여서 오버로드된 생성자를 많이 사용해야하는 문제가 있었음 매개변수 순서 기억할 필요없음, 선택적인 필드들을 다루기 쉬움, 가독성과 유지보수성 향상, 불변성 유지 가능 단점? 빌더 클래스를 따로 작성해야한다는 단점이 존재함 빌더 패턴 사용법 빌더 클래스 정의 생성하고자 하는 객체의 필드들을 멤버 변수로 가지는 빌더 클래스를 정의 빌더 메서드 정의 빌더 클래스는 필드들을 설정하는 메서들들을 구현 메서드들은 빌더 객체 자..
Java Optional : Java 8 이후 소개된 클래스로 , 값이 있을 수 도 있고 없을 수 도 있는 Nullable 객체를 감싸는 래퍼 클래스 null 값을 명시적으로 다루며, NullPointExecption을 방지하고 코드의 안정성을 높이는데 도움이 된다. Java Optional의 주요 특징 객체의 존재 여부 확인 객체가 존재하는지 아닌지를 확인 방법을 제공 isPresent() 메서드를 활용하여 Optional 객체가 비어있는지 확인할 수 있다. 값의 존재 여부에 따른 동작 처리 ifPresent(Consumer action) 메서드를 사용하여 값이 존재할 경우 해당 값을 처리하는 로직을 작성할 수 있다. 이를 통해 값이 존재하지 않을 때의 예외 상황을 방지할 수 있다. 기본 값 설정 or..