본문 바로가기

전체 글64

[Java] 0. 연습 프로젝트 생성 직장에서 사람들을 모아 java스터디를 시작했다. 기술면접 대비도 슬슬 시작해야 할 것같아 java에 대해 심층적으로 알아보기로 했다. 단순 책만 보는 것보다는 백문이불여일타, 직접 디버깅을 해보며 공부하면 좋을 것 같아 다양한 java 소스를 테스트해볼 수 있는 샘플 프로젝트를 하나 만들기로 했다. 프로젝트 환경 - OS : macOS Monterey(Apple M1) - IDE : IntelliJ 우선 인텔리제이를 열고 새 프로젝트를 생성한다. 새 프로젝트를 생성하고 나면 어떤 JDK를 사용할지 정해야한다. 내가 연습해보고 싶은 내용은 Java8이었는데 바쁘다 바빠 IT업계는 이미 버전17까지 나와있는 모양이었다... 추가 라이브러리와 프레임워크도 선택은 가능했지만, Java공부를 위한 프로젝트라 추.. 2022. 3. 20.
[Kafka] 0. 카프카와 MSA 현재 프로젝트에서 아키텍처로 MSA를 적용하여 개발하다보니, 카프카를 볼 일이 상당히 많다. MSA구조의 특성상 타파트 Table에 변경되는 내용을 비동기식으로 처리해야하는 상황이 많은데, 그때 쓰이는 것이 카프카이다. 하지만 내가 개발하는 부분은 카프카로 데이터를 Entity에 맵핑해서 테이블에 저장하는 부분만 개발하지 전반적인 설계는 아키텍처팀에서 담당한다. (그래도 개발하다보면 여러 상황때문에 알고싶지 않아도 구조를 알아야 개발이 가능하긴하다) 지난 몇개월 카프카를 사용해보며 MSA구조와 Miss-communication의 정수를 몸소 겪을 수 있었다. MSA라는 아키텍처는 단순 아키텍처가 아니라 이전까지 개발했던 방법론과 프로세스를 완전히 바꿔야 구현 가능한 것이기에 그 과도기에서 오는 시행착오인.. 2022. 3. 13.
[백준] [Python] #7576 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 3차원 토마토 문제를 보다가 2차원 토마토 문제를 먼저 풀기로 했다. 다른 node에 영향을 주는 노가다 문제니 DFS 혹은 BFS인데, 최소라는 단어가 나오면 일단 BFS로 가라 했다. 그래서 아래와 같이 풀었는데, 음 찬찬히 다시보니 문제가 굉장히 많은 코드이지만 가장 큰 문제가 2가지 정도 있다. import sys from collections import deque sys.. 2022. 2. 22.
[환경설정] M1 macOC Docker 설정, Oracle DB설치 1. 로컬 콘솔에서 docker login 로컬에서 로그인하기 전에 아래 링크에서 계정 생성 진행 https://hub.docker.com/ 계정 생성 시 입력한 id와 pwd로 로그인하게 되니 까먹지 말자! 2. docker hub에서 Checkout dockerhub에서 로그인 후 아래 링크에서 Proceed to Checkout 클릭 https://hub.docker.com/_/oracle-database-enterprise-edition 양식을 다 작성하고 나면 아래와 같은 화면이 나오는데 shell명령어 복사 후 로그인 해둔 로컬 콘솔에서 pull을 받는다. 위 과정을 docker hub에서 하지 않을 시, 아래와 같은 에러가 발생함 Error response from daemon: pull a.. 2022. 2. 12.
[백준] [Python] #13904 과제 https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 처음 읽어봤을 땐 문제가 짧아서 금방 풀수 있을 줄 알았건만,, 문제 읽고 한 10분은 뭐라하는 건지 감도 안왔다. 앞에서부터 찾아보면, 해당 일에 마감이 지나지 않은 과제 중 점수를 가장 큰걸 골라도 답이 아니다. 인간 지능으로도 케이스를 못잡겠는데 내가 로직이 구현이 가능할까 싶어 힌트를 역으로 찾아가기로 했다. 주어진 힌트를 보면, 30+50+40+60+5 라서 185라는 것을 알 수 있다. 하나씩 손으로 그려가며 케이스를 찾아본 결과.. 2022. 2. 10.
[Trouble Shooting] Spring에서 Swagger 설정을 위한 Dependency 추가 Problem Swagger사용을 위해 pom.xml 파일을 추가하던 중 아래와 같은 에러가 발생했다. org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null 2022-01-14 23:04:12.782 INFO 28998 --- [.. 2022. 1. 14.
[백준] [Python] #2869 달팽이는 올라가고 싶다 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 처음엔 되게 쉬운 문제인줄 알고 문제 그대로 계산만 했다. 하지만 역시 인생 쉽지않았다... 그대로 계산만하니 시간초과가 났다. 1차 시도 import sys sys.stdin = open("input.txt", "r") a, b, v = map(int, input().split()) ans = 1 while(True): v -= a if(v 2021. 11. 13.
[프로그래머스] [Python] Level3_네트워크 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr def solution(n, computers): cnt = 0 visited = [False for _ in range(n)] for com in range(n): if visited[com] == False: dfs(n,computers,com,visited) cnt += 1 return cnt def dfs(n, computers, com, visit.. 2021. 10. 2.
[프로그래머스] [Python] Level2_조이스틱 https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 실패 코드 def solution(name): #유니코드로 변환하여 숫자 비교 A->65, Z->90, N->78 ,O->79 cnt = 0 ans = [] arr = [ord(i) for i in name] print(arr) for a in arr: ans.append(min(a-65,91-a)) print(ans) print(set(ar.. 2021. 10. 2.
[프로그래머스] [Python] Level1_K번째 수 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr def solution(array, commands): answer = [] #command[0]-1 : slice start #command[1] : slice end #command[2]-1 : index for command in commands: answer.append(sorted(array[command[0]-1:command[1]])[command[2]-1]) return answer 2021.09.29 def so.. 2021. 9. 30.
[백준] [Python] #1062 가르침 https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 다들 비트마스킹으로 푸는걸 나는 set으로 풀기 시도를 했다. 뭔가 아이디어는 이게 맞는거같은데 주어진 테스트케이스 중 세번째에서 오답이 나와서 때려쳤다... 아래 코드는 때려치기 직전의 오답 코드이다... n, k = map(int, input().split()) if k-5 ans: ans = tmp print(ans) 혹시 몰라 제출도 해봤는데 역시나 였다. 결론은 비트마스킹으로 풀어.. 2021. 9. 25.
[백준] [Python] #14719 빗물 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 순간 문제를 보자마자 보이는 2차원 격자무늬 그림에 이거 2차원 배열 써야하나 싶었다. 그러나 그런 문제는 아니었고 숫자를 받아서 배열 생성하는 뻘짓을 안한 것만 해도 감사하다. left_wall = arr[0] ans = 0 ansList = [0] for i in range(1, m): if arr[i] < left_wall: ans += left_wall-arr[i] eli.. 2021. 9. 25.