본문 바로가기

전체 글40

[백준] 14425 문자열 집합 - Python 문제 https://www.acmicpc.net/problem/14425 문자열이 저장된 두개의 리스트 혹은 딕셔너리를 만들어주고, 같은 문자열이 있는 경우를 판별해주면 해결할 수 있는 문제였습니다. 그러나, 이 문제는 해시로 구현된 딕셔너리를 활용하면 데이터를 탐색하는데 시간 복잡도가 O(1)이기 때문에 시간 복잡도를 줄일 수 있습니다. [Python] - 리스트 활용 시 import sys input = sys.stdin.readline n,m = map(int, input().split()) s = [input() for _ in range(n)] will_check=[input() for _ in range(m)] count = 0 for i in will_check: if i in s: coun.. 2022. 12. 22.
[Java] StringUtils.hasText() 개요 사이드 프로젝트를 진행하며, null 체크가 필요한 부분이 있었습니다. 예를 들면, JWT 인가(Authorization)을 구현하기 위해, HttpServletRequest에서 가져온 헤더가 유효한지 체크해주어야 했습니다. 이를 위해, StringUtils.hasText()를 활용하였고, StringUtils.hasText()의 역할이 무엇인지 작성해보도록 하겠습니다. StringUtils.hasText() 설명을 읽으면 바로 알 수 있듯이, null이 아닌 경우, 길이가 0보다 큰 경우, 공백이 아닌 문자를 포함하고 있는 경우에 true를 리턴하는 메서드입니다. 저의 경우, header에서 얻어온 token 값이 null이 아니고, 길이가 0보다 커야하고, 공백으로만 채워지지 않아야 했기 때문에.. 2022. 12. 22.
[JPA] N+1 문제 개요 연관 관계가 설정된 엔티티를 사용하는 코드를 구현하다 보면, 마주하는 대표적인 문제는 N+1문제가 있을 것 입니다. 이번 포스팅에서는 N+1 문제가 무엇이고 어떠한 방법으로 해결할 수 있는지 알아보도록 하겠습니다. N+1 문제 연관 관계에서 발생하는 이슈로, 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n)만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 문제 입니다. 말보단 코드로 이해하는 게 더 쉬울 것 같아, 코드를 통해 알아보도록 하겠습니다. 코드 예제 상황 Member와 Team 엔티티가 존재하고, 하나의 팀은 여러명의 멤버를 가지는 상황이라고 해봅시다. Member Entity @Getter @Setter @NoArgsConstructor(access = A.. 2022. 12. 22.
[Gitlab] git push 한 내용을 자동으로 docker build + push 하기 CI/CD pipeline을 구축하면, 변경된 내용이 자동으로 배포된 서버에 반영하는 과정을 자동화할 수 있습니다. 문제는 Build Server(ex. gitlab runner)와 실제 배포되는 서버 (ex.aws ec2)는 다를 수 있습니다. 따라서, 중간에 container Registry를 씁니다. Containter Registry는 Docker Image가 저장되는 공간 입니다. 개발자는 브랜치를 생성한 뒤 각자 작업을 수행하고, main 브렌치에 merge 해줍니다. 이번 포스팅에선, 개발자가 main 브랜치에 merge 하여 생성된 새로운 변경사항을 Gitlab에 의해 자동적으로 docker build + push가 되도록 환경을 구축해보도록 하겠습니다. 👀 목표 : git에 변경사항을 p.. 2022. 12. 15.
[프로그래머스] 단어변환 - Python 문제 프로그래머스 - 단어변환 DFS/BFS 문제 입니다. 문제 조건을 제대로 파악하지 못해 혼자 해결하지 못했던 문제입니다. 그러나, 문제의 맥락을 이해하면 그래도 금방 이해할 수 있었던 것 같습니다. 저의 경우 BFS를 활용하였습니다. depth 변수를 활용하여, 한 번에 한 개의 알파벳만 바꿀 수 있는 문제 조건을 만족하는 경우 1 증가하도록 하였습니다. 위 조건을 만족하는 경우와 더불어 방문되지 않은 경우를 만족하는 words를 계속 찾아나가줍니다. 탐색을 하며 찾은 현재 단어 (cur)가 target과 같으면, 그 떄의 depth를 리턴해주어 bfs가 종료되도록 합니다. [Python] from collections import deque def bfs(begin, target, words,vi.. 2022. 12. 15.
[프로그래머스] 게임 맵 최단 거리 - Python https://school.programmers.co.kr/learn/courses/30/lessons/1844 전형적인 DFS/BFS 문제 입니다. 상대방의 진영까지 가는데 걸리는 최소 비용을 구해주어야 하는 문제입니다. 따라서, 각 간선의 비용이 모두 동일한 상황의 최단 거리는 시작 정점으로부터 방문하지 않은 인접 정점들 중 가장 가까운 곳 부터 방문하는 BFS를 통해 구해줄 수 있습니다. 문제 풀이 - 1 (Python) from collections import deque def solution(maps): n,m = len(maps), len(maps[0])#행,열 visited = [[False for _ in range(m)] for _ in range(n)] return bfs(visite.. 2022. 12. 13.