전체 글 썸네일형 리스트형 백준 16934 게임 닉네임 https://www.acmicpc.net/problem/16934 16934번: 게임 닉네임 첫째 줄에 가입한 유저의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 유저의 닉네임이 가입한 순서대로 한 줄에 하나씩 주어진다. 닉네임은 알파벳 소문자로만 이루어져 있고, �� www.acmicpc.net 1 . 트라이 문제에 들어가기 앞서 간단히 트라이에 대해 설명하겠다. 트라이는 문자열 검색에 특화된 트리로 다음과 같은 구조를 가지고 있다. 각 노드마다 Map을 가지고 있고, 문자열을 문자단위로 쪼개고 노드에 저장한다. 문자열를 검색하고 삽입하는데 걸리는시간은 O(NlogN)이다. 2. 알고리즘 알고리즘은 다음과 같다. 1. 문자열(word)을 문자로 쪼개고 각 문자를 노드에.. 더보기 백준 - 6198 옥상정원꾸미기 https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으�� www.acmicpc.net 스택에 아이템을 한 개씩 push하면서 스택의 top()과 비교한다. push 한 아이템의 높이가 스택의 top() 보다 작다면 스택의 모든 원소들은 그 아이템을 볼 수 있다는 뜻이다. 그러므로 답에 스택의 크기만큼 더해준다. 아이템의 크기가 스택의 값보다 크거나 같다면 스택의 top() 더이상 아이템 오른쪽에 있는 것들을 보지 못하므로 pop 시켜주고 이를 모든 아이템에 대해서 반복하.. 더보기 Junit -2 테스트 코드 작성 1. Assert - Junit 에서 테스트코드 결과를 확인하는 가장 일반적인 방법이다. - 만약 결과가 예측값과 일치하지 않으면 AssertionFailerError가 발생하면서 테스트는 그대로 종료됩니다. assert 에는 다음과 같은 메소드들이 있다. 실제 값이 기대한 값과 같은지 확인 assertEquals(expected, actual) 값이 null이 아닌지 확인 assertNotNull(actual) 다음 조건이 참(true)인지 확인 assertTrue(boolean) 모든 확인 구문 확인 assertAll(executables...) 예외 발생 확인 assertThrows(expectedType, executable) 특정 시간 안에 실행이 완료되는지 확인 assertTimeout(dur.. 더보기 JUnit - 1 1. 유닛 테스트의 필요성 - 유닛 테스트는 모듈이나 어플리케이션 안에 있는 개별적인 코드 단위(메소드 단위)가 예상대로 작동하는지 확인하는 것 위와 같이 컨트롤러 코드를 작성하고 이 코드가 잘 동작하는지 테스트한다고 생각해보자. 우리는 Swagger나 PostMan 같은 툴을 이용해보기도 하고 중간중간 로그를 찍어보는 등 각자의 방법으로 테스트 해봤을 것이다. 하지만 이렇게 테스트 단위가 커지고 모호하게 되면, 버그가 어디에서 발생했는지 찾기 힘들뿐만 아니라 중간에 코드가 수정되기라도 하면 어느 부분을 다시 테스트 해야되는지 조차 불분명해진다. 심지어, 테스트용으로 썼던 데이터들이 DB에 무분별하게 삽입되고 수정되어 기존 배포된 것과 섞이게 된다는 단점 또한 가지고 있다. 2. JUnit 다음은 자바 .. 더보기 JAVA 8 - 람다 추가 3. 함수형 인터페이스 활용하기 3.1 java.util.function 패키지의 함수형 인터페이스 다음은 함수형 인터페이스들이다. 함수형 인터페이스 Descriptor Method명 Predicate T -> boolean test() Consumer T -> void accept() Supplier () -> T accept() Function T -> R apply() UnaryOperator T -> T identity() 1. Supplier 입력 값 없음 -> return value 만 있는 람다 함수. Supplier는 lazy evaluation 으로 연산상의 이득을 볼수 있다. Lazy evaluation 이란 불필요한 연산을 줄이기 위해 연산을 최대한 늦추는 것을 말한다. 만약 엄청 오.. 더보기 JAVA 8 (2) - Optional 1. NullPointerException 그리고 Optional 의 필요성 대부분의 개발자들은 한번씩은 NullPointerException(NPE) 로 인해 고통받은 경험이 있을것이다. 다음과 같은 클래스들이 있다고 가정하자. public class Order { private Long id; private Date date; private Member member; // getters & setters } /* 회원 */ public class Member { private Long id; private String name; private Address address; // getters & setters } /* 주소 */ public class Address { private String st.. 더보기 웹서버 vs WAS 1. 정적 페이지 vs 동적 페이지 정적 페이지 :클라이언트의 요청에 해당하는 파일 경로 이름 받아 파일로 전해줌(html, css ,javascript , 이미지 등등) => 항상 동일한 페이지를 변환함(Static page) ex) GET index.html 동적 페이지 : Request Parameter에 맞게 기능을 수행해서 만들어진 결과물을 반환함(Servlet) 2. 웹서버 vs WAS (웹 어플리케이션 서버) 2-1) 웹서버 : HTTP 프로토콜 기반으로 클라이언트의 요청을 처리하는 서버 -> 정적인 페이지 제공(WAS 거치지 않고) -> 동적인 페이지 제공을 위해 요청을 Web Container에 전달하고 처리한 결과를 클라이언트에게 전달 ex) Nginx 설정파일 WAS (Web Appl.. 더보기 백준 1525 퍼즐 https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 간단한 BFS문제 처럼 보이지만, 보통의 DFS처럼 풀면 방문처리를 하는데 있어서 문제가 된다. 보통 사용하는 visited 배열을 사용할 것이고 0~876543210 까지의 상태를 기억하고있어야되므로 boolean 타입 배열을 사용하더라도 8억 바이트가 훌쩍 넘는 값이 필요하므로 메모리 초과가 날 수 밖에 없다. 그래서 나는 map 을 사용했다. 퍼즐에서는 0이 있는 부분만 움직일수 있기 때문에 움직일수 있는 경우수가 많지 않다.(2번 예제를 돌릴경우 181440가지 밖에.. 더보기 이전 1 ··· 6 7 8 9 10 11 12 ··· 14 다음