본문 바로가기

전체 글57

안정 해시 (Consistent Hash) - 해시 키 재배치(rehash) 문제 수평적 규모 확장성을 위해 요청 또는 데이터를 서버에 균등하게 분배 하는 것이 중요한데 어떤 기술을 사용하지? -> 안정 해시 사용 해시 키 재배치(rehash) 문제 Case - 해시 함수 : 서버인덱스 = hash(key) % n (n = 서버 개수) - 4개의 데이터베이스 key(데이터) 해시 서버인덱스 (해시 % 4) data00 1111 3 data01 2222 2 data02 3333 1 data03 4444 0 data04 5555 3 data05 6666 2 data06 7777 1 data07 8888 0 위 key(데이터)들은 아래와 같이 데이터베이스에 저장된다. 이 방법은 서버 풀(server pool)의 크기 또는 서버의 개수가 고정되어 있을때, 데이터 분포가 균등할 때는 잘 동작한.. 2023. 6. 8.
프로그래머스 - (PCCP 모의고사) 보물 지도 c++ https://school.programmers.co.kr/learn/courses/15009/lessons/121690 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr bfs를 약간 변형한 문제로, 이동시 신비로운 신발을 사용하여 두칸을 한번에 이동할 수 있다. 방문여부를 확인할 배열을 2차원 배열이 아닌 3차원 배열을 사용하여 방문여부를 확인한다. visited[1001][1001][2] ex) (2,3)을 지날 때 신비로운 신발을 사용 했으면 visited[2][3][1] = true; (2,3)을 지날 때 신비로운 신발을 사용 안했으면 visited.. 2023. 5. 19.
프로그래머스 - 순위 (c++) https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 보통 그래프 문제가 주어지면 양방향 그래프로 주어지는 경우가 많은데, 이 문제는 단방향 그래프이다. A가 B를 이겼다는 경우가 주어지면 'A -> B' 이렇게 노드를 저장한다. 또, 이 문제에는 '플로이드-와샬' 이라는 최단거리 알고리즘이 사용된다. (다익스트라도 최단 거리 알고리즘!) boolean값을 저장하는 2차원 배열을 만드는데, win[a][b]에 저장되어 있는 값은 a가 b를 이겼으면 .. 2023. 5. 17.
프로그래머스 - 전력망을 둘로 나누기 (c++) https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색 카테고리에 있는 레벨2 문제 입력으로는 하나의 네트워크로 뭉쳐있는 트리가 주어지고 전선을 한개씩 자르면서 네트워크가 두 개로 나누어지고 네트워크간 송전탑 개수의 차이가 최소로 하는 값을 구하면 된다. 결론적으로 나는 완전탐색 + 크루스칼 을 사용해서 풀었다. 전선을 하나씩 자르면서 생기는 네트워크가 몇개인지 파악하고 각 송전탑이 어떤 네트워크에 속하고 있는지 알기 위해 크루스칼을 사용했.. 2023. 5. 16.
마이다스 공채 데브옵스 지원 후기 채용 프로세스 : 서류 -> 개발자검사(개발자 역검 & 개발구현능력 검사) -> 커피챗 -> 합격 결론부터 얘기해 보자면 떨어졌다 ㅋㅋ.. 1. 서류 (합격) 기본정보, 학력, 경력, 프로젝트 경험, 수상 내역, 병역 관련 정보 등등 프로필 정보를 입력하고 원하는 포지션에 지원했다 2. 개발자검사 (합격) 인생 첫 AI역량검사를 해봤다. 개발자 역검은 인성검사 + 간단한 게임 + AI뷰인터 느낌인데 한두 번 정도 해보면서 감을 잡고 네 번째쯤 각 잡고 해서 마무리했다. 개발구현능력 검사는 코테랑 비슷한데 문제가 단계별로 이어진다. 예를 들면, 1단계에서는 바퀴를 만들라고 하고 2단계에서는 자전거를 만들라고 하고 3단계에서는 바퀴가 4개 달린 자동차를 만들라고 하며 4단계에서는 더 빠른 자동차를 만들라고 .. 2023. 5. 4.
아주대학교 공지사항 크롤러 개발 최근 팀프로젝트를 진행하면서 아주대학교 공지사항을 긁어올 일이 생겼다. 아쉽게도 학교에서 제공해 주는 API가 없어서 직접 크롤러를 만들어서 공지사항을 긁어와야 한다. 코드의 흐름은 다음과 같다 1. 클라이언트가 공지사항 페이지 번호를 url 파라미터에 넣고 서버에 요청 2. 서버는 axios를 이용해 공지사항 html 데이터를 긁어옴 3. cheerio를 이용해 html 파싱 4. 공지사항 타이틀, 생성 날짜, 링크된 url을 json 형태로 클라이언트에 응답 const axios = require('axios'); const cheerio = require('cheerio'); const express = require('express') const app = express() const origin.. 2023. 4. 26.