분류 전체보기111 헥사고날 아키텍처(Hexagonal Architecture) 디프만 프로젝트를 하면서 패키지 구조에 대한 고민이 시작되었다. 우리 팀은 헥사고날 아키텍처 구조를 사용해서 프로젝트를 진행하기로 하였다. 프로젝트 시작전에 아키텍처에 대한 이해를 먼저 하기로 해서 공부를 시작한다. 계층형 아키텍처란? 이전에 프로젝트할 때, 만들어본 예제를 헥사고날 아키텍처로 변경한다. 1. 패키지 구조 의존성 방향은 다음과 같다. controller -> service -> repository 2. 계층형 아키텍처의 단점 데이터베이스 주도 설계를 유도한다 객체지향 설계를 위해 도메인 중심으로 설계하는 것이 필요하다. 도메인 로직을 만들고, 영속성 계층과 웹계층을 만들어야 한다. ORM(Object-Relational Mapping)을 사용하다보면, 자연스럽게 데이터베이스 중심의 아키텍.. 2023. 11. 30. [프로그래머스] 옹알이(2) 설명 이 문제를 풀 때, 정석인 방법으로 첫글자에 따라 뒤에 있는 문자들을 확인하면서 탐색했다. 검색해보니 replace()를 이용한 풀이가 있어 참고해보았다. 만약 연속된 발음이 존재한다면?(ex. "ayaaya", "yeye" ...) 👉 발음할 수 없다고 했으니 넘어간다. 허용되는 문자들은 " "로 바꾼다. " " 👉 ""로 바꾼다. 만약 허용되는 것들로만 이루어졌다면, 마지막에 String은 ""이 되므로 길이가 0이 된다. 코드 class Solution { public int solution(String[] babbling) { int answer = 0; for(int i = 0; i < babbling.length; i++) { // 같은 발음을 반복할 수 없다. if(babbling[i].. 2023. 11. 21. [Leetcode] 141. Linked List Cycle https://leetcode.com/problems/linked-list-cycle/ 설명 이 문제는 주어진 리스트 노드가 싸이클이 있는지 확인하는 문제이다. 토끼와 거북이 알고리즘을 사용하면 된다. https://fierycoding.tistory.com/45 플로이드의 토끼와 거북이 알고리즘(Floyd's Tortoise & Hare Algorithm) / 증명 / leetcode 287번 / 파이썬 발단 어느날 나의 유튜브 알고리즘에 뜬 JOMA... 사실 예전에도 한 번 본 적 있는 영상인데 그때는 킬킬킬 웃고 넘어갔지만 이제와서 다시 보니 알고리즘의 내용이 궁금해졌습니다. 결국엔 알아보 fierycoding.tistory.com 주어진 노드를 fast, slow라고 붙이고 fast 노드는 2씩.. 2023. 11. 12. [Leetcode] 202. HappyNumber🙃 https://leetcode.com/problems/happy-number/ Happy Number - LeetCode Can you solve this real interview question? Happy Number - Write an algorithm to determine if a number n is happy. A happy number is a number defined by the following process: * Starting with any positive integer, replace the number by the sum of the squar leetcode.com 설명 이 문제를 처음 풀 때는 한자릿수가 되었을 때 1이 아니라면 false가 return되도록 하였다. 그.. 2023. 11. 12. [LeetCode] 55. Jump Game https://leetcode.com/problems/jump-game/ Jump Game - LeetCode Can you solve this real interview question? Jump Game - You are given an integer array nums. You are initially positioned at the array's first index, and each element in the array represents your maximum jump length at that position. Return true if you can leetcode.com 설명 첫번째로 시도한 방법은 dfs로 탐색하는 것이었다. -> 하지만 이 경우에 시간초과가 발생한다! 방법은 그리디.... 2023. 10. 29. [LeetCode] 1. Two Sum https://leetcode.com/problems/two-sum/description/ Two Sum - LeetCode Can you solve this real interview question? Two Sum - Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not leetcode.com 설명 방법1. n^n 풀이 방법 이중 반복문을 이용했다. target에서 첫번째 선택한 값을 뺀 것을 re.. 2023. 10. 29. [우아한테크코스 6기] 1주차 프리코스 회고록 우아한 테크코스 참여를 시작하며… 올해에도 역시 낙엽과 함께 우테코의 계절이 왔다!!! 작년에도 프리코스에 참여했지만,,, 오프라인 코테도 참여 못하고 떨어졌다. 그래도 몰입하여 4주간의 프리코스를 참여하고, 매주 주어진 미션을 수행한 경험이 나에게 무척이나 유익했다. 프리코스 참여가 전원 확대되면서 누구나 참여할 수 있었고, slack을 통해 서로 으쌰으쌰하고 다른 사람들의 코드를 리뷰하면서 새로운 지식도 쌓을 수 있었기 때문이다. 다만,,, 1년전의 나는 너~무 바빴기 때문에 우테코에 완전 몰입할 수 없었고ㅎㅎ 항상 바쁘게 과제를 했던게 아쉬움으로 남았다. 그래서 이번 6기 프리코스에서 내가 얻어가고 싶은 것은 크게 2️⃣가지이다. 자바와 객체지향 익히기: 아직 모르는게 많다. 왜 코드를 이렇게 작성.. 2023. 10. 29. Java String이 불변(immutable)인 이유 알고리즘 문제를 풀다가 dfs에서 다음 값을 업데이트해줄 때, 궁금증이 생겼습니다. 이 코드는 for(int i = 0; i < tickets.length; i++) { if(!visited[i] && now.equals(tickets[i][0])) { visited[i] = true; dfs(tickets[i][1], count+1, trip + "," + tickets[i][1], tickets); visited[i] = false; } } 이렇게도 쓸 수 있는거 아닌가요?! for(int i = 0; i < tickets.length; i++) { if(!visited[i] && now.equals(tickets[i][0])) { visited[i] = true; trip += ","; trip +.. 2023. 10. 27. 프로그래머스: 기지국 설치 https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음 이 문제를 풀이할 때, 접근한 방법은 그리디였다. 1. 아파트 배열을 만들고, stations 배열을 순회하면서 stations 배열의 인덱스에서 `-w ~ +w` 까지 방문 표시한다. 2. 아파트 배열을 순회하면서 방문 표시되지 않은 지점을 발견하면, 3. 해당 지점부터 2*w 만큼 이동하고 answer에 +1한다. => 하지만 이 경우에 예제는 통과하지만, 히든케이스는 통과하지 못한.. 2023. 10. 27. 이전 1 2 3 4 5 ··· 13 다음