반응형 전체 글297 [Java] List -> Map 으로 변환하는 이유 List to Map Java 프로그래밍을 진행할 때 List를 Map으로 변환하는 방법과 그 이유에 대해 알아보겠습니다. 특히, 데이터를 효율적으로 탐색하고 순서를 유지하고자 할 때 이 방식이 어떻게 유용하게 작용하는지 살펴보겠습니다. 문제 상황 예를 들어, 상품 번호 리스트를 기반으로 특정 상품들의 정보를 데이터 베이스에서 조회하는 상황이라고 가정해보겠습니다. 이 때, 상품 번호의 순서대로 상품 정보를 유지하면서 효율적으로 조회하는 방법이 필요합니다. List에서 Map으로 변환하는 이유 Map으로 변환하는 주된 이유는 효율적인 탐색과 순서 유지입니다. List에서 특정 요소를 찾기 위해서는 리스트를 처음부터 끝까지 순회해야합니다. 이는, 탐색 시간이 요소의 수에 비례하여 증가하는 시간 복잡도(O(n.. Java 2024. 4. 5. [프로그래머스] Java :: 추억 점수 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사.. 코딩테스트/프로그래머스 2024. 4. 4. [프로그래머스] Java :: 달리기 경주 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" .. 코딩테스트/프로그래머스 2024. 4. 3. TDD(Test-Driven-Development)의 설명 TDD(Test-Driven-Development) 소프트웨어 개발 방법론 중 하나인 TDD에 대해 알아보겠습니다. TDD ? TDD는 Test-Driven-Development의 약자로 테스트 주도 개발 이라고 한다. 작은 단위의 테스트 케이스를 작성하고 이를 통과 하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스이다. 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다. eXtream Programming(XP) 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토 타입을 완성하는 애자일 방법론 중 하나이다. 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다. 단.. TEST/SW 테스팅 이론 2024. 4. 2. [프로그래머스] Java :: 최빈값 구하기 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120812 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 제한사항 0 코딩테스트/프로그래머스 2024. 3. 31. [프로그래머스] Java :: 안전지대 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120866 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완.. 코딩테스트/프로그래머스 2024. 3. 30. 테스트 코드 작성하는 이유와 방법 테스트 코드 작성하기 애플리케이션을 개발하면서 테스트 코드를 통해 개발한 코드를 어떻게 테스트할 수 있는 지 알아보겠습니다. 테스트하기 어려운 영역 1️⃣관측할 때마다 다른 값에 의존하는 코드 현재 날짜/시간, 랜덤값, 전역 변수/함수, 사용자 입력 등 2️⃣ 외부 세계에 영향을 주는 코드 표준 출력, 메시지 발송, 데이터베이스에 기록하기 등 순수함수(pure function) 같은 입력에는 항상 같은 결과 외부 세상과 단절된 형태 테스트하기 쉬운 코드 테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 일부러 오류가 발생할 수 있는 테스트 코드를 작성해서 예외처리가 잘 작동하는지 확인 정확히 의도한 비즈니스 로직에 맞춰 테스트 코드를 작성해서 결과값이 잘 나오는지 검토 리팩토링의 .. TEST/SW 테스팅 이론 2024. 3. 29. [프로그래머스] Java :: 겹치는 선분의 길이 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 .. 코딩테스트/프로그래머스 2024. 3. 28. [프로그래머스] Java :: 로그인 성공? 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요. 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다. 로그인이 실패했을 때 아이디.. 카테고리 없음 2024. 3. 28. ElasticSearch를 이용한 검색 최적화(with. SpringBoot) Issue 프로젝트를 진행하면서 태그 검색 을 하는 기능을 구현해야했습니다. 태그 조회 API에서 구현하고자 하는 기능은 다음과 같습니다. 태그 검색 기능 태그 자동 완성 기능 해당 조건을 구현하고자 할 때는 기존 RDB 를 사용할 수 있습니다. 검색할 때 RDB의 Like 검색 기능을 사용해도 되지만, Table Full scan 방식을 사용하고 있기 때문에 데이터의 양이 많아질수록 검색의 속도가 현저히 감소하게 됩니다. 이를 통해 해결하기 위해 ElasticSearch 를 활용하여 검색하는 기능을 최적화를 진행해보려고 합니다. 자세한 ElasticSearch 내용은 필자가 정리한 블로그에서 확인하면 됩니다. => 블로그 정리 링크 Problem ElasticSearch 는 역색인 기반의 검색엔진으로 .. DBMS/ElasticSearch 2024. 3. 27. [프로그래머스] Java :: 정수를 나선형으로 배치하기 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한 사항 1 ≤ n ≤ 30 입출력 예 n result 4 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7].. 코딩테스트/프로그래머스 2024. 3. 26. Clean Code - 함수를 안전하고 간결하게 작성하기 Chapter 03. 함수 1. Solid 객체 지향 설계의 5가지 원칙 SRP : 단일 책임 원칙(한 클래스는 하나의 책임만 가져야한다) 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야하는 이유는 오직 하나뿐이어야한다. SRP 책임이 분명해지기 때문에, 변경에 의한 연쇄 작용에 자유로워질 수 있다. 가독성 향상과 유지보수가 용이해진다. OCP : 개방-폐쇄 원칙(소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있어야한다) 변경을 위한 비용은 가능한 줄이고, 확장을 위한 비용은 가능한 극대화해야한다. 요구사항의 변경이나 추가 사항이 발생하더라도, 기존 구성요소에는 수정이 일어나지 않고, 기존 구성 요소를 쉽게 확장해서 재사용한다. 객체 지향의 추상화와 다형성을 활용한다. LSP :.. Book/Clean Code 2024. 3. 25. 이전 1 2 3 4 5 ··· 25 다음