목록프로그래밍/알고리즘 (3)
엠블란스휘호휘호

https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 부분합 문제입니다. 0.5초의 제한시간을 가지고 있어 선형시간을 가지는 알고리즘을 생각했습니다. 주어진 예제에서 시뮬레이션 아이디어는 다음과 같습니다. 파란색 화살표에서는 S이상의 부분합을 찾은 상황으로써, start 인덱스를 증가시킬 수 있다면(증가시켜도 S이상이라면) 증가시키고 그럴수 없다면 last 인덱스를 증가시켜가며 최단 길이를 찾습니다. 빨간 화살표에서는 파란색 화살표에서..
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 알파벳 문제입니다. 맵을 입력 받고, 해당 조건에 따라 DFS(깊이 우선 탐색)을 수행하며 원하는 출력을 가져옵니다. 핵심함수인 DFS(pair _pos, int count)를 설명하면 다음과 같습니다. 1. 매개변수는 각각 현재 위치, 지나온 칸의 개수를 의미합니다. 2. 깊이 우선 탐색에서 다음으로 갈 수 없는 경우는 다음과 같이 3가지가 존재합니다. ㄱ. 맵에서 벗어났을 때 >> if..
https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 주사위 굴리기 문제입니다. 주사위가 굴러가는 것을 구현하는게 가장 관건인 문제 였습니다. 이는, 주사위의 위치를 이동시키고 방향에 따라 주사위를 회전하는 것으로 나눠 구현했습니다. 핵심 함수인 rollofDice()를 설명하면 다음과 같습니다. 1. 입력받은 명령을 다 다 수행할 때 까지 반복한다. while (!commands.e..