분류 전체보기 192

99클럽 코테 스터디 14일차 TIL: [프로그래머스] 단어 변환

https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 익숙한 dfs로 풀었었는데, begin을 target으로 변환하는 가장 빠른 과정을 찾아야 하므로 bfs가 더 적합한 거 같다. 그런데 dfs로 풀더라도 가지치기를 하면 되니까 큰 차이는 없을 거 같다.  dfs로 푼 풀이는 다음과 같다.import java.util.*;class Solution { String begin; String target; String[] ..

CS/Algorism 2024.06.02

99클럽 코테 스터디 13일차 TIL: [프로그래머스] 아이템 줍기

https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr bfs 문제인 건 딱 보고 알았는데 구현을 어떻게 해야할지 감이 안왔다. 주의할 점들은 다음과 같다.우선 내가 막힌 부분은 "테두리를 의미하는 꼭짓점을 이차원 배열로 구현하는 것이 올바른가?"였다. 그런데 다음을 보면, 테두리를 기준으로 해서 테두리 수를 셌을 때랑, 이차원 배열을 기준으로 해서 가장자리 칸들의 수를 셌을 때랑 차이가 없다는 것을 알 수 있다. 따라서 이차원 배열로 구현해도 된다!다음..

CS/Algorism 2024.06.01

99클럽 코테 스터디 12일차 TIL: [프로그래머스] 여행경로

https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에 푼 풀이는 다음과 같다. import java.util.*;class Solution { public String[] solution(String[][] tickets) { Map> map = new HashMap(); for (String[] ticket : tickets) { PriorityQueue que = map.getOrDefault..

CS/Algorism 2024.05.31

센티널 로컬과 도커에 적용해보기

로컬에 적용이전 글에서 레디스의 복제와 센티널에 대해 알아봤다. 이번 글에서는 이들을 로컬 환경과 도커 환경에서 직접 적용해보자. 우선 로컬에 적용해보자. 레디스 서버는 다음과 같다.마스터: 6379 포트슬레이브: 6380 포트그리고 레디스 센티널 서버는 다음과 같다.센티널 서버 1: 26379 포트센티널 서버 2: 26380 포트센티널 서버 3: 26381 포트레디스 서버 띄우기(복제 환경)우선 복제 환경을 구성하기 위해 레디스 마스터와 슬레이브 서버를 띄워보자.  /etc/redis 경로에 다음 두 개의 파일을 만들어뒀다. sudo nano /etc/redis/master.confsudo nano /etc/redis/slave.confmaster.confport 6379masterauth 1234re..

Backend/Redis 2024.05.31

레디스 복제(Replication)와 센티널(Sentinel)

고가용성가용성이란 일정 기간 동안 서비스를 정상적으로 사용할 수 있는 시간의 비율을 뜻하며, 이 값이 클수록 가용성이 높다고 한다. 서비스를 안정적으로 운영하기 위해서는 가용성을 높일 수 있는 방안을 도입해야 한다.  레디스는 고가용성을 확보하기 위해 다음 두 가지 기능을 제공한다.복제: 마스터 노드의 데이터를 복제본 노드로 실시간 복사하는 기능이다. 따라서 마스터 노드의 서버에 장애가 생겨 데이터가 유실된다고 해도 복제본 노드에서 데이터를 확인할 수 있다.자동 페일오버: 마스터 노드에서 발생한 장애를 감지해 레디스로 들어오는 클라이언트 연결을 자동으로 복제본 노드로 리다이렉션하는 기능이다. 따라서 마스터 노드의 서버에 장애가 발생했을 때 빠른 조치가 가능하다.복제(Replication)복제를 하는 이유..

Backend/Redis 2024.05.30

99클럽 코테 스터디 11일차 TIL: [프로그래머스] 퍼즐 조각 채우기

https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 예전에 풀다가 빡구현에 지쳐서 포기한 문제인데 이번엔 풀었다..! 아이디어 자체는 간단하다.bfs를 통해 퍼즐과 빈칸들을 찾는다. 그리고 나중에 빈칸에 퍼즐을 넣을 수 있는지 비교해야 하므로 퍼즐과 빈칸의 위치를 0, 0을 시작으로 하며, 딱 맞는 크기의 배열로 만들어야 한다.그리고 각 빈칸에 각 퍼즐들이 들어갈 수 있는지 확인한다. 빈칸과 퍼즐의 사이즈는 딱 맞아야 한다. 즉, 두 배열의 가로, 세..

CS/Algorism 2024.05.30

99클럽 코테 스터디 10일차 TIL: [프로그래머스] 전력망을 둘로 나누기

https://school.programmers.co.kr/learn/courses/30/lessons/86971# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 전선들 중 하나를 골라 끊어야 한다. 따라서 wires를 하나씩 고르며 완전탐색을 진행했다.그리고 끊은 전선을 기준으로 dfs를 진행한다. 예를 들어, 3과 4를 이은 전선을 끊을 경우 3을 기준으로 이어진 송전탑들이 몇 개인지 dfs를 진행하고, 4를 기준으로 이어진 송전탑들이 몇 개인지 dfs를 진행한다. 그리고 두 값의 차이를 구한다.내가 유독 헷갈렸던 부분은 dfs에서 sum에 값을 더하고 ..

CS/Algorism 2024.05.29

99클럽 코테 스터디 9일차 TIL: [프로그래머스] 모음사전

https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 조금 헤맸는데 dfs로 쉽게 해결할 수 있는 문제였다. dfs로 "A", "E", "I", "O", "U"를 차례대로 이어서 만들어진 각 문자열들을 리스트에 담고, word가 몇 번째 문자열인지 확인하면 된다.이렇게 하면 시간 복잡도는 dfs(O(5^5)) + 완전탐색(O(5^5))이다.import java.util.*;class Solution { String[..

CS/Algorism 2024.05.28

99클럽 코테 스터디 8일차 TIL: [LeetCode] 899. Orderly Queue

https://leetcode.com/problems/orderly-queue/description/ 어렵게 구현하다가 틀렸는데 답을 보니 굉장히 간단한 문제였다. k가 2이상인 경우, 문자들을 사전순으로 정렬한 것이 답이 된다.반면 k가 1이면, 문자열의 길이만큼 맨 앞 글자를 맨 뒤로 옮기는 작업을 진행한 후에, 가장 사전순으로 빠른 문자열을 반환하면 된다.알고리즘을 떠올리기 전에 문제를 읽고 무작정 예를 들어가며 이해해보자. 그러면 문제 이해를 통한 해결책이 떠오를 거다..!class Solution { public String orderlyQueue(String s, int k) { if (k >= 2) { char[] charArr = s.toCharArray(); Ar..

CS/Algorism 2024.05.27

99클럽 코테 스터디 7일차 TIL: [LeetCode] 2551. Put Marbles in Bags

https://leetcode.com/problems/put-marbles-in-bags/description/ 혼자 고민하다가 백트래킹으로 풀었는데 시간 초과 + 오답이 났다. 그래서 다른 사람들 풀이를 봤는데 이해하지 못하다가 겨우 이해하고 다시 풀었다.  특별한 알고리즘은 아닌 거 같고 문제를 이해하고 답이 나오는 과정을 이해하면 해결방법을 떠올릴 수 있다.score는 각 가방의 cost를 모두 더한 값이다.score를 구할 때 weights 배열의 첫 번째와 마지막 값은 무조건 포함된다. 따라서 두 개의 값은 고려할 필요가 없다. 첫 번째와 마지막 값을 제외하면 score에 들어가는 값은 경계선에 있는 값들이다. 만약 0, 1, 2, 3, 4번 인덱스를 가진 weights를 2개의 가방에 나눠 담..

CS/Algorism 2024.05.26