본문 바로가기
반응형

Java6

Lazy 로 쿼리를 날리고 싶다면? 문제 aService 로직을 실행하고, 실행 환경이 release 환경이라면 bService 로직을 추가로 실행하는 코드가 있다. public void run(Model model) { model.addAttribute("play1", aService.play()); boolean isRelease = DeployUtils.isRelease(); if (isRelease) { model.addAttribute("play2", bService.play()); } } 문제는 이 코드가 대략 10 군데 정도의 Controller 에서 사용되고 있어 중복처럼 보였다. 중복을 제거하기 위해 BaseController 를 만들고, 해당 코드를 설계했다. BaseController public void add(Mod.. 2023. 9. 12.
백준: 사탕 게임 본 풀이는 java 언어를 사용하였습니다. 3085번: 사탕 게임 풀이 아래처럼 보드의 각 칸마다 해당 칸의 사탕을 상, 하, 좌, 우 움직이면서 다른 사탕과 바꾼 후 바꿀 때마다 행, 열의 연속된 사탕 최대 개수를 구하면서 그 중에 가장 큰 개수를 구하면 풀 수 있을 것 같았다. (완전 탐색) 먼저, 사탕을 움직이기 전에 현재 보드에 있는 행, 열의 연속된 최대 사탕 개수를 구한다. 해당 로직은 checkMaxCountOfCandyToEat() 메서드로 분리한다. public int solution(String[][] board, int n) { int maxCountOfCandyToEat = checkMaxCountOfCandyToEat(board, n); } 행, 열의 연속된 최대 사탕 개수는 아래.. 2022. 2. 11.
프로그래머스 : 완주하지 못한 선수 본 풀이는 java 언어를 사용하였습니다. 문제 보러가기 풀이 해당 문제는 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. 라는 조건이 있기 때문에, for 문으로 순회하면서 풀면 시간 초과로 실패하게 된다. 따라서 이 문제는 해시 문제로 효율성까지 생각하면서 코드를 작성해야한다. 마라톤 경기에 참여한 선수를 HashMap 에 모두 넣어 준다. 여기서 주의할 점은 중복되는 이름이 있을 수 있기 때문에, 이 부분을 잘 체크해주어야 한다. HashMap 의 key 는 경기에 참여한 선수 이름, value 는 해당 이름의 인원 수 이다. Map map = new HashMap(); for (String name : participant) { if (map.containsKey(name.. 2021. 8. 13.
[이펙티브 자바] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩터리, 생성자는 선택적 매개변수가 많을 때 대응하기 어려운 문제가 있다. 이때, 점층적 생성자 패턴을 사용할 수 있다. 점층적 생성자 패턴 쉽게 말해서 매개변수 마다 생성자를 늘려가는 방식이다. (매개변수 1개 생성자, 매개변수 2개 생성자...) 하지만 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기가 어렵다는 단점이 있다. 각 값의 의미 파악이 어려움 매개변수가 몇 개인지 파악해야함 타입이 같은 매개변수가 있으면 버그가 발생할 때 찾기 어려움 실수로 매개변수 순서를 바꿔도 버그가 발생할 수 있음 자바빈즈 패턴 (JavaBeans pattern) 점층적 생성자 패턴의 대안으로, 매개변수가 많을 때 자바빈즈 패턴을 사용할 수 있다. 매개변수가 없는 생성자로 객체를 생성 후, setter.. 2021. 5. 25.
2020 KAKAO BLIND RECRUITENT : 자물쇠와 열쇠 *** 본 풀이는 java언어를 사용하였습니다. *** 문제 보러가기 핵심 요약 Key가 Lock의 구멍에 정확히 일치하는가 (key가 회전 가능) 2차원 배열에 대한 이해 / 깉은 , 얕은 복사에 대한 이해 필요 여러가지 풀이법이 있겠지만 기존 Lock의 크기로 Key를 비교하기엔 여간 까다로운게 아니다. 그럼 어떻게 해야할까? Lock의 크기를 확장하면 된다. Lock의 배열의 크기를 Key가 바로 검증할 수 있는 크기로 확장하고, Lock을 중앙에 배치하면 다음과 같이 Key를 통해 바로 탐색이 가능해 진다. 확장 크기는 lock.length + (key.length - 1) * 2를 통해 확장할 수 있다. 그 후 Key가 확장 배열에 값을 더하면서 Lock의 배열 값들이 모두 1이 들어있는지를 판.. 2020. 1. 23.
2020 KAKAO BLIND RECRUITENT : 괄호 변환 *** 본 풀이는 java 언어를 사용하였습니다. *** 문제 보러가기 핵심 요약 균형잡힌 괄호 문자열 p를 입력받으면, 올바른 괄호 문자열로 변환하라 규칙 설명이 상세하게 잘 되어있어, 규칙대로 하나씩 차근차근 만들어 나가면 무리없이 문제를 풀 수 있을 것이라 생각한다. 규칙은 다음과 같다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른.. 2020. 1. 21.