전체 글 191

[백준] 2011. 암호코드

https://www.acmicpc.net/problem/2011 쉬운듯하지만 신경쓸게 있고, 구현 과정에서 실수하기 좋은(헷갈리는..) 부분이 많아서 푸는데 시간이 좀 걸렸다. 우선 dp로 풀 수 있는 문제이다. 25114가 주어졌을 때, 먼저 2를 만드는 경우부터 25, 251, ... , 25114를 만드는 경우까지 생각해보자.2 -> dp[1] = 1225 -> dp[2] = 22 + 525251 -> dp[3] = 2 2 + 5 + 125 + 12511 -> dp[4] = 42 + 5 + 1 + 125 + 1 + 12 + 5 + 1125 + 1125114 -> dp[5] = 62 + 5 + 1 + 1 + 425 + 1 + 1 + 42 + 5 + 11 + 425 + 11 + 42 + 5 + 1 +..

CS/Algorism 2024.06.27

도커 네트워크

네트워크에서 IP 주소의 고갈을 막기 위해 사설 IP와 공인 IP를 나누는 NAT이라는 개념이 등장했다. 도커에서도 이와 유사하게 하나의 컴퓨터에서 여러 개의 컨테이너를 구동하는 경우, 각 컨테이너마다 IP 주소가 할당되는데, 이 IP 주소는 도커가 설치된 호스트 내에서만 쓸 수 있는 IP로 외부와의 통신이 불가능하다. 그러면 각 컨테이너는 어떻게 외부와의 네트워크 통신이 가능한 걸까? eth0호스트의 eth0은 실제 우리가 외부와 연결할 때 사용하는 호스트 네트워크 인터페이스이다.컨테이너 안에 eth0은 veth 가상 인터페이스를 통해 외부와 통신할 수 있게 되는 것이다.veth컨테이너가 시작될 때마다 호스트에 veth(virtual eth)라는 가상의 네트워크 인터페이스가 생성된다.컨테이너가 외부와 ..

Backend/Docker 2024.06.25

도커 알아보기

하나의 컴퓨터 위에서 여러가지 응용 프로그램을 실행시키고 싶을 수 있다. 이는 운영체제도 마찬가지이다. 맥 위에서 윈도우를 실행시키고 싶을 수도 있고, 반대로 윈도우 위에서 리눅스를 실행시키고 싶을 수도 있다. 동시에 여러가지를 실행시키는 가장 단순한 방법으로, 하드웨어를 여러 개 사서 하나에 하나씩 돌리는 무식한 방법이 있다. 그러면 하드웨어에 상관없이 하나의 하드웨어 위에 여러 개의 응용 프로그램을 돌리는 방법을 알 수 있다면 모든 것이 해결되지 않을까? 따라서 하나의 컴퓨터 자원을 마치 여러 개인 것처럼 가상으로 쪼개서 사용할 수 있도록 하는 가상화 기술이 필요하다.가상화가상화는 하나의 물리적 컴퓨터에서 다수의 독립적인 가상 시스템을 생성하고 실행할 수 있게 해주는 기술이다. 그리고 이 가상화를 통..

Backend/Docker 2024.06.25

[2022 KAKAO TECH INTERNSHIP] 코딩 테스트 공부

https://school.programmers.co.kr/learn/courses/30/lessons/118668# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr[문제 정의]주어진 모든 문제를 풀 수 있는 알고력과 코딩력을 가진다는 말은, 주어진 problems 배열에서 가장 큰 값인 알고력과 코딩력을 가져야 한다는 말이다. 즉, (초기 알고력, 코딩력)에서 시작해서 (목표 알고력, 코딩력) 상태에 도달하는데 걸리는 최단 시간을 구하면 된다. [구현]그런데 현재의 알고력과 코딩력에서 알고력 및 코딩력을 늘릴 수 있는 방법은 다음과 같이 여러 방법이 있다.알..

CS/Algorism 2024.06.21

[2023 KAKAO BLIND RECRUITMENT] 미로 탈출 명령어

https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 카카오 문제치고 간단하네? 라고 생각했지만 시간 초과.. dfs 문제인데, dfs를 돌지 않아도 되는 예외 상황을 잘 생각해줘야 시간 초과가 나지 않는다.dfs를 통해, k만큼 돌고, 현재 위치가 (r, c)에 도착했으면 해당 경로를 리스트에 담으면 된다. 그런데 사전 순으로 가장 빠른 경로 1개만 알아내면 된다. 따라서 루트를 돌 때 애초에 사전 순(d, l, r, u)으로 돌고, 가장 먼저 도착..

CS/Algorism 2024.06.21

[2024 KAKAO WINTER INTERNSHIP] n + 1 카드게임

https://school.programmers.co.kr/learn/courses/30/lessons/258707 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 가장 중요한 포인트는 이번 라운드에서 새로 뽑는 2개의 카드가 앞으로 필요할지, 필요 없을지 미리 알 수 없다. 따라서 2개의 카드 중 몇 개의 카드를 동전을 주고 가져와야 하는지 알 수 없다. 이 부분이 가장 고민이었다. 그런데!! 다음과 같이 풀면 된다.새로 뽑는 2개의 카드를 별도의 set에 담아두자.그리고 나중에 필요할 때 set에서 필요한 카드를 가져오고 그만큼 coin을 감소시키면 된다!..

CS/Algorism 2024.06.20

[2024 KAKAO WINTER INTERNSHIP] 주사위 고르기

https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 단순한 문제 같았지만 어려웠던 문제이다. 대략적인 아이디어는 다음과 같다.A가 가져갈 주사위의 조합을 만든다.각 조합에 대해, A가 자신의 주사위들을 던졌을 때 나올 수 있는 결과 리스트와 B가 자신의 주사위들을 던졌을 때 나올 수 있는 결과 리스트를 구한다.그리고 A의 결과 리스트와 B의 결과 리스트를 비교해서, A가 이기는 횟수가 가장 많은 조합이 정답이다.위와 같이 계산하면 시간 복잡도는 다음..

CS/Algorism 2024.06.14