전체 글

알고리즘(백준)/브루트 포스

[알고리즘/브루트 포스] 19532번 : 수학은 비대면강의입니다 - python

링크 : https://www.acmicpc.net/problem/19532 19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net 문제 소요시간:3분 40초 설계하기(접근방법) 1. 입력받기 a,b,c,d,e,f 전부 입력받는다 2. 알고리즘 해석 for i 를 -999부터 999까지 for j를 -999부터 999까지 if a * i + b * j == c and d * i + e * j == f: 다음과 같은..

알고리즘(백준)/브루트 포스

[알고리즘/브루트 포스] 2231번 : 분해합 - python

링크 : https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 소요시간: 20분 이상 설계하기(접근방법) 1. 입력받기 2. 알고리즘 해석 1) 1부터 n까지 분해합을 완전탐색을 통해 구해나간다 while문을 통해 각 자리수를 더한다 2) 분해합이 구해지면 for문을 break(그 것이 최소의 분해합이다)한다 3. 출력하기 코드(출력) n = int(input()) cnt = 0 flag = 0 k = n for i..

알고리즘(백준)/브루트 포스

[알고리즘/완전 탐색] 2798번 : 블랙 - python

링크 : https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 문제 소요시간: 10분 20초 1. 입력받기 2. 알고리즘 해석 완전 탐색을 해주면 된다 for문을 3중 중첩하여 for i in range(n-2): for j in range(i + 1, n - 1): for k in range(j + 1, n): 해준 후, 3개의 원소의 합이 m 미만인 최대의 값을 구해준다 3. 출력하기 설계하기(접근방법) 코드(출력..

알고리즘(백준)/그리디

[알고리즘/그리디] 21314번 : 민겸 - python

링크 : https://www.acmicpc.net/problem/21314 21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net 문제 소요시간: 30분 max 부분 실패 설계하기(접근방법) 1. 입력받기 2. 알고리즘 해석 규칙 1) 10^N 꼴의 십진수는 N + 1개의 M으로 1-> M 10 -> MM 100 -> MMM 규칙 2) 5 × 10^N 꼴은 마지막에 K를 붙여 5의 배수임을 나타낸다 M과 K의 조합에 따라 다양한 수가 나올 수 있는데 그 변수를 만드는 것은 MK로 이루어진 문자열에서 나타난다 MK를 함께 가면 50, M과 K를 따로 가져가면 15가 되기 때문에 가장 큰수를 만드는..

알고리즘(백준)/그리디

[알고리즘/그리디] 16953번 : A → B - python

링크 : https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 소요시간: 20분(실패) 설계하기(접근방법) 1. 입력받기 2. 알고리즘 해석 전부 탐색할 수도 있지만 숫자가 주어졌으니 역순으로 해결해나갈수 있다 1) 끝자리가 1인 경우, 10으로 나누어 1을 제거해준다 2) 나머지 2로 나뉘는 경우, 2로 나누어준다 1),2)를 진행하며 cnt ++를 한다 만약 while문 내에 숫자의 변화가 없는 경우, 그것은 숫자를 만들 수 없는 경우기 때문에 변화검사를 해주고 -1을 출력한다 3.출력하기 cnt를 출력한다 코드(출력) a, b = map(int, input().s..

알고리즘(백준)/그리디

[알고리즘/그리기] 20365번 : 블로그2 - python

링크 : https://www.acmicpc.net/problem/20365 20365번: 블로그2 neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한 www.acmicpc.net 문제 소요시간: 38분 12초 설계하기(접근방법) 1. 입력받기 2. 알고리즘 해석 1.색깔이 바뀔때마다 바꾸는 것보다 B , R 중에 많은 색으로 먼저 다 칠한 후에 다른 색으로 중간 중간 칠해주는 것이 무조건 같거나 더 빠르다 2.색의 개수는 중요하지 않다. 어차피 연속적으로 칠하기 때문에 1개를 칠하나 연속된 4개를 칠하나 같은 강도이다. 3. 체크 항목 1) 리스트의 처음이 B ..

알고리즘(백준)/그리디

[알고리즘/그리디] 20300번 : 서강 근육맨 - python

링크 : https://www.acmicpc.net/problem/20300 20300번: 서강근육맨 PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다. www.acmicpc.net 문제 소요시간: 15분 24초 설계하기(접근방법) 1. 입력받기 기구의 개수와 기구의 피로도를 입력받는다 2. 알고리즘 해석 두 기구의 합의 조합을 모두 했을 때 그 최대값이 최소가 되도록 해야 한다. 먼저 리스트를 정렬한다 정렬하면 1,2,3,4......10과 같은 형태로 정렬될 것이다 가장 큰 수 인 10 과 짝을 지었을 때 가장 작은 합을 가질 수 있는 경우는 (1,10)이다 역시 그 다음 수는 9는..

알고리즘(백준)/그리디

[알고리즘/그리디] 20115번 : 에너지 드링크 - python

링크 : https://www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 문제 소요시간: 10분 25초 설계하기(접근방법) 1. 입력받기 에너지 드링크의 수 : n 에너지 드링크 리스트 : [] 2. 알고리즘 해석 A, B, C 캔이 있고 붓는 에너지 드링크가 반이 소실되기 때문에 소실을 최소화하기 위해서는 캔을 하나 정해서 한곳에만 넣어야한다. 즉, 1캔을 제외하고는 양이 모두 1/2이 되고 1캔만 원래 양을 보존가능하다 -> 따라서 가장 양이 많은 캔에 모..

되다
코드테일