본문 바로가기

Algorithm/BOJ

(101)
[BOJ-1765][DFS] 닭싸움 팀 정하기 - Java 문제 바로가기 1765번: 닭싸움 팀 정하기 문제 닭싸움은 월드의 전통이다. 이번 캠프에서도 어김없이 닭싸움 대회가 열렸다. 그런데, 닭싸움을 하기 위해서는 반드시 누가 우리 편이고, 누가 우리 편이 아닌지를 알아야 할 것이다. 닭싸� www.acmicpc.net BFS 태그에서 찾았는데 DFS로 풀었씀다.. 내 친구의 친구는 내 친구이다. 내 원수의 원수도 내 친구이다. 이 규칙을 잘 생각하고 풀면 됨미다.. friend 그래프와 enemy 그래프를 만들고, N 번을 돌면서 check 배열을 두어 해당 사람을 봐줬는지 체크하면서 봐주면 됩니다.. 뭔서린지 모르겠ㄴㅔ import java.util.ArrayList; import java.util.Scanner; public class Main { sta..
[BOJ-1463][DP] 1로 만들기 - Java 문제 바로가기 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net N이 주어지면 1) 1을 빼거나, 2) 2의 배수면 2로 나누거나, 3) 3의 배수면 3으로 나누는 세가지 액션 중 하나를 해서 1로 만드는 최소 횟수를 구하는 문제입니다. 기본적인 Dynamic Programming 문제입니다.. DP는 메모이제이션(Memoization)이란 기술을 사용해서 풉니다. 메모이제이션이란 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술입니다. DP를 푸는 방법은 크게 Top-Down 방식과 Bottom-Up 방식이 있습니다. Top-..
[BOJ-1181][문자열] 단어 정렬 - Java 문제 바로가기 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 중복 제거후, 단어의 길이로 먼저 정렬을 하고, 단어 길이가 같은 경우에는 사전순으로 정렬을 하면 되는 문제입니다. 자바로 custom하게 어떻게 정렬하는지 한참 찾아보고 풀었습니다. import java.io.IOException; import java.util.*; class sortByValueFirst implements Comparator{ @Override public int compare(String o1, String o2) { ..
[BOJ-2667][BFS] 단지번호붙이기 - Java 문제 바로가기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. � www.acmicpc.net 아주 간단한 BFS 문제 입니다. 다만 각 단지에 속하는 집들의 수를 오름차순으로 정렬해야 하니 주의하세여. import java.io.IOException; import java.lang.reflect.Array; import java.util.*; class Dir{ int y; int x; Dir(int y, int x){ this.y = y; this.x = x; } } public class Main { static int N; stati..
[BOJ-2178][BFS] 미로 탐색 - Java 문제 바로가기 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 어우 10개월 전에 풀었던 건데 자바로 한 번 풀어보았씁니다. 아직 자바가 익숙치 않아 코드가 이쁘지 않기 때문에 혹시 조언해주실게 있으면 댓글에 남겨주세욥 BFS 문제를 풀겠다고 다짐하고 거의 처음 접한 문제였는데, 맨 처음 풀이 방법을 찾아 보고 이마를 탁 쳤던 기억이 납니다. n방문 여부만(true/false) 체크하는 문제만 봤었는데, next 좌표에 왔을 때 cur 좌표에 있는 visited 값 + 1 해서 이동 거리(혹은 시간)을 구하는 건 누가 생각한걸까여 세상엔 참..