본문 바로가기
728x90

알고리즘339

[C++] 백준 10451 순열 사이클 https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 문제 해결 재귀를 이용해 사이클을 조사하는 것이다. 사이클이 만들어 지는 것을 확인 했으면 다음 만들 수 있는 것을 확인하는데 사이클 만들어지는데 구성 된 숫자는 다음 사이클을 만들 때 구성 될 수 없으므로 visited를 이용해 이미 구성 되었는 지를 확인하도록 한다. CODE #include #include using n.. 2023. 9. 3.
[python] 백준 21939 문제 추천 시스템 Version 1 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제 해결 Hash 맵을 통해 문제 번호를 알면 문제 난의도를 바로 알 수 있도록 매핑한다. 문제 난이도를 알면 그 난이도 문제 번호들을 알 수 있도록 int-list 매핑을 한다. recommend == 1일 때는 어려운 난이도부터 살펴보고 recommend ==-1은 쉬운 난이도부터 문제가 있는지 살펴보도록 구현한다. CODE import sys input = s.. 2023. 8. 30.
[C++] 백준 14719 빗물 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제 해결 높이의 기준을 잡아야 한다. 가장 끝 왼쪽과 오른쪽이 모두 가장 높은 길이이면 쉽제 $\sum (min(*가장 왼쪽 높이, *가장 오른쪽 높이)-i)*(w-2)$ ($i=1,2,3...$)라는 것을 알 수 있다 여기서 관점을 바꾸어 $i$를 기준으로 생각을 해보면 $i$보다 왼쪽,오른쪽 모든 방향에 블록의 높이중 $i$번째 높이보다 큰 것이 있다면 $min(왼쪽 높이중.. 2023. 8. 29.
[python] 백준 1201 NMK https://www.acmicpc.net/problem/1201 1201번: NMK 첫째 줄에 세 정수 N, M, K가 주어진다. www.acmicpc.net 문제 해결 먼저 수열을 구할 수 있기 위한 n의 범위를 알아야한다. m+k-1 ≤ n ≤ m*k 이다. n이 가장 작을 때는 [1, 2, 3, .. . m, m-1, m-2, . . . m+k-1] 수열이며 n이 가장 클 때는 [k,k-1,k-2, . . . 1, 2*k, 2*k-1, . . . k+1, . . . m*k, m*k-1, . . . (m-1)*k + 1] 이다. n이 범위 안에 들어오면 처음으로 k개의 숫자를 내림차순해서 k개의 내림차순을 만든다. 이제 k+1~n까지 정렬해서 m-1개의 오름차순 수열을 만들어야한다. 여기서부터 너무.. 2023. 8. 27.
728x90