본문 바로가기

ALGORITHM_PRACTICE

(44)
백준 14499번: 주사위 굴리기 백준 14499번: 주사위 굴리기 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 주사위를 지도위에 굴려서 이동할때마다 주사위의 윗면 값을 출력하는 문제이다. 난이도는 어렵지 않은데 x, y좌표 값이 row, col이 내 생각과는 반대로 되어있..
백준 5014번: 스타트 링크 백준 5014번: 스타트 링크 DFS로 풀려하다가 DP도 사용해서 풀었다. 어렵게 풀지는 않았다. 현재 위치에서 스사트링크 위치까지 이동하는데 지정된 층수만큼 up하거나 down할 수 밖에 없다. 만약 엘레베이터로 갈 수 없다면 계단을 이용하라는 문구를 띄운다. 내가 생각한 조건은 다음과 같다. 1. up과 down을 했을 때 0층 초과 F층 이하 범위에서 엘레베이터가 움직이여야 한다. 2. up과 down으로 해당 층으로 이동가능 해야한다. 3. 이동하는 방법이 여러개 있을 때 먼저 도달하는 값이 최소값이다. 코드는 다음과 같이 작성했다. 이동했을 때 그 층이 이동 횟수의 최소값을 가지고 있어야하니까 dp는 모두 최고값인 1000001로 초기화를 했다. 시작층의 위치의 dp 값은 0으로 시작하여 up과..
백준 6593번: 상범 빌딩 백준 6593번: 상범 빌딩 6593번: 상범 빌딩 문제 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 지나갈 수 없거나, 비어있어서 지나갈 수 있게 되어있다. 당신은 각 칸에서 인접한 6개의 칸(동,서,남,북,상,하)으로 1분의 시간을 들여 이동할 수 있다. 즉, 대각선으로 이동하는 것은 불가능하다. 그리고 상범 빌딩의 바깥면도 모두 금으로 막혀있어 출구를 통해서 www.acmicpc.net 1트! BFS로 풀수 있는 간단한 문제였다. 3차원이기 때문에 인덱스 위치만 헷갈리지 않으면 되는 것 같다. 동서남북상하로 이동할 때 벽('#')으로만 이동하지 않게하고 출..
백준 1629번: 곱셈 백준 1629번: 곱셈 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 처음에 무작정 재귀함수를 쓰려다가 최고값으로 돌려보았을 때 연산시간이 너무 길어진다는 것을 알았다. 그래서 고민해보다가 방법을 모르겠어서 결국엔 구글링... 알고리즘 자체는 간단했다. 입력값 B를 계속해서 분할하여 제곱 계산법으로 풀어나가는 것이었다. B가 10이라고 가정하면 A^10 => (A^5)^2 => ((A^2)^2*A)^2 => (((A)^2)^2*A)^2 B가 더이상 안나눠질 때까지 반복해 쪼갠뒤 1부터 시작하게했다. 알고리즘 이해 자체는 간단했으나 시간초과도 아니고 자꾸 틀렸습니다가 뜨는것..