본문 바로가기

전체 글

(233)
[Prefix Sum(Product)] 238. Product of Array Except Self 문제 바로가기 배열이 주어졌을 때 본인(nums[i])을 제외한 나머지 원소들의 곱을 구하는 문제입니다. 배열 원소를 모두 곱하고 각 자리에 있는 애로 나누면 되겠다 싶었는데 그러지 말랍니다. 문제에서 요구하는 접근법이 따로 있나 봅니다. Java class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] answer = new int[n]; // prefix int prefixProduct = 1; for (int i = 0; i < n; i++) { answer[i] = prefixProduct; prefixProduct *= nums[i]; } // suffix int suffixProduct = 1..
[Java] Arrays.asList() 의 비밀 자바의 java.util.Arrays 클래스는 배열을 다루는 유용한 메서드들을 제공하는 클래스입니다. sort(), copyOf(), equals(), deepEquals(), fill() 등 여러 static 메서드가 포함되어 있습니다. 오늘은 이 중에서 배열을 List 로 변환해주는 asList() 메서드의 비밀에 대해 알아봅시다. asList() 메서드의 구현은 아래와 같습니다. @SafeVarargs @SuppressWarnings("varargs") public static List asList(T... a) { return new ArrayList(a); } 보기엔 별 특이한 점이 없는 것 같은데요, 여기에는 아주 무시무시한 비밀이 숨겨져 있습니다.. 바로… 리턴하는 ArrayList 클래스가..
[Greedy/우선순위 큐] 1642. Furthest Building You Can Reach 문제 바로가기 Furthest Building You Can Reach - LeetCode Can you solve this real interview question? Furthest Building You Can Reach - You are given an integer array heights representing the heights of buildings, some bricks, and some ladders. You start your journey from building 0 and move to the next building leetcode.com 미디엄 문제긴 한데 꽤 간단합니다. 빌딩을 타 넘어야 되는데요, 벽돌과 사다리의 개수를 고려해서 최대한 많이 타 넘어가야 합니다. 우선순위 ..
[Spring] 스프링의 다양한 의존관계 주입 방식 (+ 생성자 주입을 권장하는 이유) 스프링 프레임워크에서 의존 관계 주입(Dependency Injection, DI)이란 스프링 컨테이너에서 객체 빈(Spring bean)을 생성해 두고, 생성한 객체를 필요한 객체에 주입하는 방식을 말합니다. 객체 자체가 코드 상에서 객체 생성에 관여하지 않아도 되기 때문에 객체 사이의 의존성을 낮출 수 있습니다. 의존 관계 주입을 사용하면 유연하고 확장성이 뛰어난 코드가 되는 것이죠. 스프링의 의존 관계 주입 방법에는 크게 세 가지 방법이 있습니다. 필드 주입 수정자 주입 (setter 주입) 생성자 주입 오늘은 이 세 방법에 대해 알아보고, 의존 관계 주입 시 생성자 주입을 권장하는 이유를 알아보겠습니다. 필드 주입 @Service public class MyService { @Autowired p..
2023 회고 및 2024 목표 새해가 밝았습니다. 밝은 지는 쫌 되긴 했는데요, 요새 너무 바빠서 이제야 회고를 끄적여봅니다. 사실 그리 바쁘지 않았어도 미뤘을 것 같긴 합니다. 그래도 쓰는게 어딥니까? 올림픽 정신으로 회고 작성 그 자체에 의의를 두고.. 2023년 한 해를 정리하고 2024년 새해의 목표를 세우는 시간을 가져보겠습니다. 올해는 건강, 취미, 일 요렇게 세 가지 주제로 정리하고자 합니다. 관계는 뭐 갖다버린건 아니고 딱히 적을 게 없어서 ^^~~ 건강 22년 11월부터 헬스를 시작해서 재미도 붙고 근육도 붙어감에 따라 일주일에 4~5번 정도 꾸준히 다녔었는데요, 아마 인생 최장 기간동안 꾸준히 한 운동이 아니었나 싶습니다. 23년 목표글에서 말했던 꾸준함을 유지해서 제 자신에게 칭찬 스티커를 주고 싶어요. 다만 최근..
[Java] Optional 때려 뿌수기 Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다. 오늘은 이러한 Optional 을 여러 주제로 정리해보겠습니다. 1. Optional.of() vs Optional.ofNullable() 먼저 of() 메서드와 ofNullable() 의 코드를 봅시다. /** * Returns an {@code Optional} describing the given non-{@code null}..
뒤늦은 2023년 2분기 회고 사실 2분기 회고를 쓸까말까 고민을 많이 했습니다. 1분기 회고 글에서 읽겠다 다짐했던 책들을 아직 안읽었거든요.ㅋㅋ 그래도… 빼먹으면 짜치고 + 반성 + 다시 마음을 다잡기 위해 짧게나마 써봅니다. 2분기 세 달 동안 크고 작은 업무를 많이 했습니다. 4~5월에는 페이코를 통해 PG사에 직접 결제수단을 등록하는 작업을 했는데요, 이 업무를 하면서 자동결제 로직을 좀 많이 봐서 아주 건설적인 작업이었다고 생각합니다. 그래도 늘 볼때마다 새로워 짜릿해 재밌진 않아 요새는 업무량이 그렇게 많지 않아 한 업무를 할 때 코드를 보는데 많은 시간을 할애하고 있습니다. 뭔가 코드를 작성하는 시간보다 기존 코드를 보는 시간이 훨씬 더 많은 것 같아요. 코드 분석하는 시간과 내 코드의 퀄리티가 정비례하기를… 김영한 강..
[Dijkstra] 1514. Path with Maximum Probability 문제 바로가기 Path with Maximum Probability - LeetCode Can you solve this real interview question? Path with Maximum Probability - You are given an undirected weighted graph of n nodes (0-indexed), represented by an edge list where edges[i] = [a, b] is an undirected edge connecting the nodes a and b wi leetcode.com 오랜만에 미듐 문제를 건드려 보았습니다. 우째 푸는지 몰라서 멋쟁이 형님의 유튭 강의를 보고 풀었습니다.^^~ 요 문제.. 재밌네용. 오랜만에 다익스트라 알..