백준 2798번 블랙잭카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다.한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만
백준 2231번 분해합어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245
백준 7568번 덩치우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라
백준 1018번 체스판 다시 칠하기지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다
백준 1436번 종말의 숫자666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스
백준 2750번 수 정렬하기N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는
백준 2751번 수 정렬하기2N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은
백준 10989번 수 정렬하기 3 코드 풀이 메모리 초과 시간 초과 입력 변수를 위한 리스트 변수를 만들어줄 필요가 없었습니다. 정답 단순히 input으로 입력을 받는 것이 아닌 sys 모듈을 이용했습니다.
대부분의 프로그래밍 언어가 느려지는 경우는 메모리 재할당이 이뤄지기 때문입니다. 주로 for 문에서 이런 일이 발생합니다. 아래의 경우를 보겠습니다.위 코드는 for 문의 스텝이 진행될 때마다 메모리 재할당이 발생합니다. a2 변수에 append하기 때문입니다. 속도저
백준 2108번 통계학최빈값 : 중복일 경우를 고려해 max_idx라는 리스트 변수를 만들고, 최빈(max_count)을 나타내는 인덱스를 max_idx에 추가합니다. 만약 값이 중복이라면 max_idx에는 2개 이상의 값이 추가되어 있을 것입니다. 이를 오름차순 정렬
백준 2565번 전깃줄먼저 입력 변수를 2차원 배열 형태로 받은 후, 첫 번째 인자 기준으로 정렬해줍니다.두 번째 인자를 기준으로 가장 긴 증가하는 부분 수열(LTS)를 이용합니다.결과값 = n - 가장 긴 증가하는 부분 수열 값
백준 12865번 평범한 배낭
백준 9184번 신나는 함수 실행위 재귀함수의 성능 문제는 구했던 값을 반복해서 구하는 것에 있습니다.따라서 한 번 구한 값을 저장할 수 있는 공간(dp)을 만들어서 계산의 결과값을 저장합니다.다음에 그 값을 이용해야 할 일이 있을 때, 계산이 아닌 저장된 값을 사용하
백준 2559번 수열입력 변수에 대한 누적 합을 구합니다.어떤 구간의 합을 구하고 싶다면, 누적 합의 값을 빼서 구할 수 있습니다.예를 들어, num\[1] ~ num\[3] 구간의 합을 구하고 싶다면,prefix_sum\[3] - prefix_sum\[0]을 통해 구
백준 24444번 알고리즘 수업 - 너비 우선 탐색 1result 변수의 크기는 총 노드의 수로 만듭니다. 초기값은 0으로 넣습니다.어떤 노드에 방문했다면 그 노드를 몇 번째로 방문했는지를 알기 위해 cnt를 도입합니다.해당 노드를 방문했다면 result 변수의 해당
백준 24479번 깊이 우선 탐색 1
백준 24480번 알고리즘 수업 - 깊이 우선 탐색 224479번 문제에서 오름차순 조건이 내림차순으로 바뀐 문제로 정렬을 내림차순으로 하는 것을 제외하곤 코드가 동일합니다.
백준 24445번 알고리즘 수업 - 너비 우선 탐색 224444번 문제의 조건에서 오름차순이 내림차순으로 바뀐 것을 제외하곤 동일합니다. 따라서 정렬을 내림차순으로 수행하면 되겠습니다.
백준 16928번 뱀과 사다리 게임 코드 풀이
백준 1654번 전깃줄 자르기런타임 에러(ZeroDivision)을 해결하기 위해 if mid != 0 이라는 조건이 추가되었습니다. 이분 탐색을 진행하다가 0 을 기준으로 자른다는 뜻은 아무것도 자를 수 없는 것과 같기 때문에 cnt 의 초기값인 0과 같습니다.
백준 12015번 가장 긴 증가하는 부분 수열 2
백준 10828번 스택문자열을 어떻게 파싱하냐가 고민이었는데, word = input().split()을 이용하면 word에 띄어쓰기를 기준으로 리스트 형태로 담깁니다.예를 들어, push 1은 word = \['push', '1']처럼 담기고, top의 경우 word
백준 1874번 스택 수열result에 결과값을 굳이 담아주고 이후에 출력한 이유는 만약 스택 수열을 만들지 못하는 입력값일 경우, NO만 출력해야 하기 때문입니다.cnt > n + 1의 조건이 cnt > n이 아닌 이유는 코드 상 n값과 입력값이 같을 때 cnt +=
백준 17298번 오큰수stack을 이용해서 시간복잡도를 줄여야 문제를 해결할 수 있습니다.주어진 수열을 1번 인덱스부터 끝까지 순서대로 조회합니다(for i in range(1, n)).stack에는 조회한 인덱스가 차례대로 쌓입니다(stack.append(i)).만
백준 1707번 이분 그래프이분 그래프가 아닌 조건: 사이클이 발생했을 때, 사이클에 속한 노드 개수가 홀수아래와 같은 그래프가 존재한다고 할 때 2, 3, 4 노드가 사이클을 이루고, 노드의 개수는 홀수입니다.따라서, 이분 그래프가 아닙니다.아래와 같은 그래프가 존재
백준 1629번 곱셈단순히 제곱을 해버리면 시간 초과제곱을 반씩 쪼개면서 재귀로 점점 분해 해주는 트릭이 필요합니다.값이 커지는 걸 방지하기 위해 계산마다 C로 나눠줍니다.A = 10, B = 11, C = 12계산식: 10 ^ 11 % 121/2로 분해 => B %
백준 2740번 행렬 곱셈행렬의 곱셈을 그대로 구현하면 되는 문제
백준 1753번 최단경로힙 자료구조를 이용해 다익스트라 알고리즘으로 문제를 해결할 수 있습니다.우선순위가 높은(거리가 가장 짧은) 노드를 힙에서 뽑아내 최단거리를 갱신합니다.
백준 13549번 숨바꼭질 3본 문제는 다익스트라 알고리즘을 이용하면 문제를 해결할 수 있습니다.그래프 문제에서 시작 노드에서 도착 노드가 이어져 있다는 것을 응용해서 해당 문제는 특정 칸에서 갈 수 있는 경우의 수를 3가지(+1, -1, X2)로 보면 됩니다.
백준 3273번 두 수의 합투 포인터를 이용하여 문제를 해결할 수 있습니다.주어진 수열을 오름차순 정렬한 뒤 양끝에서부터 더하면서 기준값(x)과 비교합니다.기준값보다 두 수의 합이 클 경우 오른쪽 끝 포인터가 -1, 작을 경우 왼쪽 끝 포인터가 +1이 되면서 두 포인터
백준 1450번 냅색문제weight 리스트를 반으로 나눕니다. 보통 len(weight) // 2 를 기준으로 나누게 되고 이를 a_weight, b_weight 라고 부르겠습니다.a_weight, b_weight 각각을 브루트포스 방법으로 부분 집합의 합을 구해주고
백준 7576번 토마토상자에 담긴 토마토를 graph로 나타내고, 맨 처음 graph에서 1인 값을 queue에 담고, BFS를 이용한 탐색을 시작합니다.특별히 visited 변수를 사용할 필요는 없고, 기존의 토마토의 상태를 나타내는 graph에 탐색이 진행됨에 따라
\[1152번] 단어의 개수
\[10809번] 알파벳 찾기
\[1157번] 단어 공부
\[2836번] 설탕 배달
\[1026번] 보물
\[11047번] 동전 0(핵심)가지고 있는 동전의 종류로 무조건 원하는 가치의 합을 만들 수 있습니다.동전의 종류를 내림차순으로 정렬하고 차례대로 나눠 몫과 나머지를 계산한 뒤 몫은 모두 더하고, 나머지를 그 다음 크기의 동전 종류로 나눠 몫과 나머지를 계산하는 작업
https://www.acmicpc.net/problem/14501Dynamic Programming을 활용
16953번 A -> BA에서 B로 가려 하지 말고, B에서 A가 되도록 생각해본다B가 2로 나눠지면 2로 나눈다B의 끝자리가 1이라는 것은 곧 1의 자리수가 1이라는 것을 의미하고 10으로 나눈 나머지가 1이라는 의미B가 2로 나눠지지 않고 1의 자리수가 1도 아니라
11399번 ATM주어진 시간에 대해 오름차순으로 정렬정렬된 시간들을 차례대로 계산
2501번 약수 구하기
2775번 부녀회장이 될거야
2178번 미로탐색