전체 글 35

프로그래머스 - 신규 아이디 추천 / C++

programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제를 보면 단계가 주어진다. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다..

Algorithm 2021.03.03

puppeteer - javascript로 크롤링을 해보자

흔히 크롤링 할 때 파이썬을 많이 사용하는 것으로 알고있다. 하지만 글쓴이는 파이썬을 별로 좋아하지 않기 때문에 javascript를 이용하여 크롤링을 해보려고 한다. 1. 설치 혹시 node.js가 안깔려있다면 깔도록 하자. nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. init crawling이라는 폴더를 만들고 나서 에디터로 작업창을 구성하자 터미널을 켜준뒤 다음 명령어를 실행하자. npm init (후에 명령어 끝날때까지 엔터) npm install puppeteer crawling 폴더 안에 app.js파일을 생성하자 ..

Javascript 2021.03.01

백준 - 2146번(다리 만들기) / C++

www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 풀이 과정 1. 각각의 섬들을 bfs를 사용하여 구분한다. 코드에서 color 변수가 구분해주는 역할을 한다. 1번섬은 1로 표시 2번섬은 2로표시... 2. 구분된 섬들을 저장한 map배열을 순회하면서 가장자리인 {i,j}와 가장자리가 몇번섬의 가장자리인지를 함께 edge vector에 넣는다. 3. edge벡터를 2중 반복문으로 택시거리를 이용해서 거리를 구한 후에 가장 최소값 저장후 답에서 -1을 했다. 가장자..

Algorithm 2021.02.27

백준 - 16947번(서울 지하철 2호선) / C++

www.acmicpc.net/problem/16947 16947번: 서울 지하철 2호선 첫째 줄에 역의 개수 N(3 ≤ N ≤ 3,000)이 주어진다. 둘째 줄부터 N개의 줄에는 역과 역을 연결하는 구간의 정보가 주어진다. 같은 구간이 여러 번 주어지는 경우는 없고, 역은 1번부터 N번까지 번호 www.acmicpc.net 문제 풀이 과정 1. 주어진 노드들로 부터 싸이클을 판별한다. 2. 정점을 돌며 싸이클에 속하는 노드면 0을 출력하고 그렇지 않다면 가장 가까운 싸이클까지의 거리를 출력한다. 싸이클 판별을 어떻게 해야 간단하게 구현할까 생각을 해봤다. 일단 내가 선택한 방법은 dfs의 인자로 (첫 시작노드, 현재 보고있는 노드, 깊이) 를 주었다. 그리고 만약 깊이가 2이상이고 현재 보고있는 노드에 ..

Algorithm 2021.02.26

(고찰) vim에디터

사람마다 읽는 방식이 다르다. 빔, 바이, 브이아이 등등으로 읽는다. 정확히 어떻게 읽는진 모르겠지만 나는 빔이라고 읽는다. 고찰 - 빔을 사용하면 이득인 부분이 있나? 글쓴이는 현재 데구리라는 사람으로부터 빔을 가르침받아 잘 사용하고 있다. (홍보임) 주로 사용하는 명령어 몇개만 적는다. 명령어 기능 h 왼쪽 이동 j 아래쪽 이동 k 위쪽 이동 l 오른쪽 이동 dd 한줄 삭제 x 한칸삭제 esc 키 보기모드로 전환 gg=G 전체행 형식맞추기 yy 복사 p 복사행 붙여넣기 r 한글자 변환 이외에도 수많은 명령어들이 있다. 추후에 다시 정리해서 올려야겠다. 장점 손에만 익으면 편하다. 리눅스 서버에서 과제할 일 있으면 다른 에디터를 안쓰고도 과제해결이 가능하다. 단점 손에 안익으면 죽어도 못쓴다. esc누..

Programming 2021.02.25

(고찰) MAX_INT

c++이나 java와 같이 자료형이 존재하는 언어로 알고리즘 문제를 풀 때 const int INF = 987654321 과 같은 정수형을 선언할 때가 있다. 고찰 - 어떤값을 사용해야 잘 사용했다고 소문이날까? 일단 내가 사용하는 max값은 주로 0x3f3f3f3f 라는 16진수를 사용하고있다. 0x3f3f3f3f(16) = 1061109567(10) 이다. 이 수는 10억이 살짝 넘는 수이고 2를 곱했을때 2^31을 넘지 않는 수이다. (degurii.tistory.com/ 블로그 관리자가 알려줬다 ^-^) 이거 홍보임 암튼 홍보임 데구리 블로그 웹 개발과 알고리즘을 공부합니다. degurii.tistory.com 그렇다면 다른 값으로는 무엇이 있을까? int MAX = 987654321; 을 보자 ..

Programming 2021.02.24

프로그래머스 - 키 순서 / C++

programmers.co.kr/learn/courses/30/lessons/49191?language=cpp# 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 결과적으로 플로이드 와샬 알고리즘을 사용하면 풀리는 문제였다. 그렇다면 왜 플로이드 와샬 알고리즘을 사용하면 되는 것일까? 아래의 표는 문제의 테스트 케이스를 플로이드 와샬 알고리즘을 사용한 후의 dist 배열을 출력한 것이다. 0 1 INF INF 1 -1 0 -1 -1 1 INF 1 0 -1 1 INF 1 1 0 1 -1 -1 -1 -1 0 플로이드 와샬 알고리즘은 반복문을 돌면서 모든 지점을 비교하여 최단거리가 갱신되는데, 이때, 순위가 확실하게 이기거..

Algorithm 2021.02.23

백준 - 1422번(숫자의 신) / C++

www.acmicpc.net/problem/1422 1422번: 숫자의 신 첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 1,000보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보 www.acmicpc.net 프로그래머스 - 가장 큰 수 문제와 비슷하다. 오세준이 현재 가지고 있는 K개의 수들 중에서 이 수들을 적어도 한번 이상 사용해서 만들 수 있는 가장 큰 수를 만들어야 한다. 만약 수가 3개가 있다고 생각해보자 [3, 4, 10] 3개를 이용해서 만들 수 있는 가장 큰 수는 4310이다. 4개를 이용해서 만들 수 있는 가장 큰 수는 431010이다. K개가 주어지고 K+N 만큼 수를 ..

Algorithm 2021.02.22

프로그래머스 - 가장 큰 수 / C++

programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 내림차순 정렬을 풀 수 없는 문제다. 예제에서 [3, 30, 34, 5, 9] 의 경우를 살펴보자 이를 내림차순 해보자 => [34, 30, 9, 5, 3] 답 : 3430953 그렇다면 맨 앞자리부터 순서대로 큰 순서로 정렬을 한다면? [9, 5, 34, 30, 3] or [9, 5, 34, 3, 30] 이런식..

Algorithm 2021.02.22