문제 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제 풀이 포도주 마셨을 때 가장 많이 마시는 경우를 찾는 문제이다. 문제의 제한사항으로 연속해서 3잔 이상의 포도주를 마실 수 없다. 처음부터 세잔의 와인을 마실 경우 마실 수 있는 포도주는 다음과 같다. OXO : 중간 와인을 마시지 않는 경우 OOX : 세 번째 와인을 마시지 않는 경우 XOO : 첫 번째 와인을 마시지 않는 경우 즉, 이전 와인과 현재 와인을 마시는 경우와 전전의 와인과 현재 와인을 마시는 경우, 현재 와인을 마시지 않는 경우로 나뉘어..
문제 9465번: 스티커 문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티 www.acmicpc.net 문제 풀이 스티커를 제거 할 때 다음과 같은 규칙이 적용된다. 변을 인접하고 있으면 동시에 스티커가 제거되어 선택할 수 없으므로 대각선으로 선택하여야 한다. 스티커의 점수가 최대가 되기 위해서는 대각선의 점수를 합하여 최대 값을 찾으면 된다. 첫 번째 행에서 시작하게 된다면 `↘↗↘↗` 와 같이 스티커를 선택하게 된다. 이와 반대로 두 번째 행의 경우 `↗↘↗↘` 와같이 스티커를 선택하게 된다. 첫 번째 열과 두 번째 열은단순히대각선의합을구하면되지만 단순히 대..
문제 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제 풀이 아홉 난쟁이 중에 7명을 선택하였을 때 키의 합이 100이 되는 경우를 찾는 문제이다. 주어진 9명의 난쟁이들을 7명으로 뽑을 수 있는 조합을 찾고 이 중에 키의 합이 100인 경우를 반환하면 된다. 코드 from itertools import combinations if __name__ == '__main__': dwarfs = [0] * 9 for idx in range(9): dwarfs[idx] = int(input()) for case in co..
문제 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 문제 풀이 이 문제는 위의 그림을 이해한다면 쉽게 점화식을 세울 수 있다. 처음에 N이 1일 경우, 사자가 존재하지 않을 경우와 사자가 왼쪽에 존재할 경우, 사자가 오른쪽에 존재할 경우가 각 1개씩이라는 것을 알 수 있다. N이 2가 되면 추가된 공간에 사자가 없거나, 사자가 왼쪽에 있거나, 사자가 오른쪽에 있을 경우의 수를 찾아야 한다. 새로운 공간에 사자가 없을 경우 같은 라인에 사자가 겹치거나, 모두 없어도 상관 없으므로 사자가 없는 경우, 왼쪽에 있는 경우, 오른쪽에 있는 경우를 모두 더한다. 이와 달리 사자가 왼쪽이나 오른쪽에 가기 위해서는 N - 1에 사자가 없거나, N - 1의..
1, 2, 3 더하기 시리즈 1, 2, 3 더하기 1, 2, 3 더하기 2 1, 2, 3 더하기 3 1, 2, 3 더하기 4 1, 2, 3 더하기 5 1, 2, 3 더하기 6 1, 2, 3 더하기 7 1, 2, 3 더하기 8 1, 2, 3 더하기 9 문제 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 문제 풀이 기존의 풀이 중 1, 2, 3 더하기와 같은 방식으로 규칙을 찾으면 n을 1, 2, 3을 더해나타낼 수 있는 경우의 수를 찾을 수 있다. 기존의 1, 2, 3 더하기 문제는 n의 범위도 작을 뿐더러 나누기 연산이 없었지만 이 문제는 범위가 1000000..
우분투 18.04에서 도커를 설치를 다루고자 한다. 간단히 명령어 몇줄로 도커를 설치할 수 있으며, 도커 컨테이너를 실행하는 과정 또한 간단하다.😁 도커 설치 sudo apt install curl curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh docker -v curl이 설치 되어 있지 않다면 첫 번째 줄과 같이 curl을 설치하는 과정을 진행 후에 아래의 명령어를 순차적으로 실행하면 도커를 편리하게 설치 할 수 있다. 마지막 줄인 docker -v에서 버전 정보가 출력된다면 정상적으로 도커가 설치 된 것이다. 도커 그룹에 유저 추가 sudo usermod -aG docker $USER sudo usermod -aG docker other-u..
문제 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 문제 풀이 자연수 N이 주어지면 해당 수를 제곱수들의 합으로 나타낼 때 항의 최소 개수를 구하는 문제이다. N에 따라서 항의 최소 개수를 비교하면 문제를 쉽게 풀 수 있다. N 항 항의 최소 개수 0 없음 0 1 1 ^ 2 1 2 1 ^ 2 + 1 ^ 2 2 3 1 ^ 2 + 1 ^ 2 + 1 ^ 2 3 4 2 ^ 2 1 5 2 ^ 2 + 1 ^ 2 2 6 2 ^ 2 + 1 ^ 2 + 1 ^ 2 3 7 2 ^ 2 + ..
문제 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 풀이 다음과 같은 조건을 통해, 한번의 계산으로 연속합 중의 최대 값을 찾을 수 있다. 현재 수열 값이 앞의 값과 더한 것 보다 값이 크면 그대로 유지하고 아닐 경우, 앞의 합산 값으로 갱신한다. 말로는 잘 이해가 안되지만 문제 예시에서 최대 값을 구하는 과정을 보면 쉽게 이해할 수 있다. Origin 10 -4 3 1 5 6 -35 12 21 Round 1 10 6 Round 2 10 6 9 Round 3 10 6 9 10 Round 4 10 6 9 10 15..