📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
사이트 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제 분석 약 5시간만에 푼문제였다... 어렵지 않다 생각했는데 매우 복잡했던 문제였다.(리펙토링 무조건 보기!!) 5 2 0 2 0 1 0 1 0 1 0 0 0 0 0 0 0 2 0 0 1 1 2 2 0 1 2 입력이 다음과 같으면 출력은 10이 나와야된다. 즉 입력부분에서 치킨집 즉 2가 5개 이므로 이 중 2개를 뽑아 집 즉 1과 거리가 최소가 나는 기준으로 치킨..
사이트 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 문제 분석 필자가 드디어 백트래킹을 마스터했다.! 일단 이 문제는 입력이 아래와 같으면 2 5 6 0 0 1 0 출력은 위에 최대 아래 최소로 나와야 된다. 30 30 즉 입력의 첫째줄은 2는 수의 갯수, 둘째줄은 수를 입력한 것이고, 셋째줄은 = - * / 의 순서로 갯수를 나타낸 것이다. 조건이 나열한 숫자는 이동을 안해도 된다..
사이트 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 문제 분석 문제는 뭔가 쉬워보여서 바로 도전했지만 그렇지가 않았다. 초반에 큰수 작은수로 정렬해서 어떻게든 해볼려 했는데 뭔가 이상했다... 그래서 문제 유형을 봤더니 백트래킹... 즉 재귀함수를 사용해야 했다. 재귀함수가 너무 어렵다... 필자가 생각한 알고리즘은 재귀함수를 구현해서 만약 입력이 6개면 트리구조 처럼 1 2 3 4 5 6 /// 1 2 3 4 6 5 // 1 2 3 5 4 6 이렇게 끝..
사이트 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 문제 분석 초반에 문제가 이해가 안되었지만 집중해서 읽으니 나름 쉬운 문제 였다. 일단 요점을 파악해야된다. 적어도 N개를 사기 위해!! 적어도!! 이 적어도라는 말이 중요하다. 필자는 N개를 딱 맞춰서 그에 맞는 최소 비용인줄 알았으나 아니었다. 즉 N개 이상이 되도 최소비용이면 된다는 것이다!! 그럼 필자는 어떻게 해결했을까? sett = new int[m + m]; one = ne..
사이트https://www.acmicpc.net/problem/14502 14502번: 연구소인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크www.acmicpc.net 문제 분석- 필자가 그렇게 풀고 싶었던 문제를 풀었다... 그래프 문제를 하도 많이 풀어서 그래프 틀 알고리즘을 세우는 것은 어렵지 않았고 오히려 재밌었다! - 하지만 벽을 무조건 3개 세우는 알고리즘을 도대체 어떻게 구현을 해야하는지 정말 많은 고민을 해왔다. 전체 경우의 수를 구해서 for 구문을 세울려고 했지만 이거는 너무 노가다일뿐더러 오히려 짜기 복자했고 bfs로 구현할라해도 좀 뭔가 안맞아서 고..
사이트 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 분석 static int n; static int m; static int[][] arr; static boolean[][] visited; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int cnt1 = 0; static Queue queue = new LinkedList(); - ..