알고리즘 풀이

선수들 숫자 받아줌 선수들 성 앞글자를 문자 a로 받아서 int배열 alp에 해당하는 index에 ++해줌 성 앞글자가 같은 5명 이상이 존재할 경우 해당 알파벳 출력 단 하나의 경우도 없을 경우 PREDAJA 출력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); char a; int[] alp = new int[30]; sc.nextLine(); /..
난쟁이 9명의 키를 int 배열로 받은 후에 9명의 총 키를 이용하여 2명씩 묶어준 다음 sum에서 뺄셈함 100이 나올 때까지 진행 100이 나올 경우 가짜 난쟁이들의 키 값을 0으로 처리 0이 아닌 난쟁이들의 키 값을 오름차순으로 출력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr =..
boolean 배열을 선언해 통째로 출석을 받아준 후에 출석을 안한 학생만 따로 출력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); boolean arr[] = new boolean[31]; Arrays.fill(arr, false); for (int i = 0; i
이게 초등부문제라는게 믿기지가 않는다. index에 속한 값을 이용하여 또 다른 index로 넘어가는 개념을 알아야 하는데, num[i] -> num[num[i]] -> num[ num[ num[i] ] ] -> ... 이렇게 반복하여 rotation을 시켜주다가 '마지막으로 도착하는 index가 가진 값' '최초의 index'의 값과 같아야 한다. 이렇게 되면 지금까지 지나간 index들이 모두 하나의 고리처럼 연결되어 문제에서 요구하는 숫자들의 집합이 된다. 이를 위해서 주의해야 할점은 Visited라는 boolean배열을 통해 rotation을 하면서 들렀던 index를 체크해주는 것이 중요하다. 그렇지 않으면 무한재귀할 수 있다. 최종 목적지까지 도달하여 문제에서 요구하는 조건을 만족하면 rota..
저번에 풀었던 모눈종이 문제와 비슷함 넓이를 좌표로 찍어줍니다. 정사각형이 있으면 왼쪽 아래 모서리 부분의 좌표가 true일 경우 해당 정사각형의 넓이를 포함한다고 생각하면 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean[][] coord = new boolean[101][101]; int[] xy = new int[4]; for(int i=0; i
길이와 좌표 모두 받고 단지 구분하는 함수 (DJSetting)를 정의함 0~T 행, 0~T열 쭉 돌리면서 1이 나타나면 DJSetting 시작 상하좌우 돌리면서 1일 경우, 방문하지 않은 경우 (nVisited가 true인 경우) 2가지 조건을 충족할 시 num++해주면서 그 좌표로 다시 DJsetting 시작 전부 다 돌리고난 후의 num( 임의의 단지의 아파트 수 ) 를 ArrayList에 추가 ( 단지가 몇개가 될지 몰라서 List로 저장함 ) 그 후 ArrayList 오름차순 정렬 후 size와 성분 모두 출력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38..
좌표들을 배열들을 통해 저장해놓고 move함수를 이용하여 움직여줌 한번 움직일 때마다 manHattan함수를 이용하여 축제 좌표까지 도달이 가능한지 체크함 가능한 경우 arrival 변수를 true로 저장하여 마지막에 출력 (여기서 arrival이 true, 즉 목적지에 도달할 수 있는 경우일 때에 나머지 for문을 안 돌리고 빠져나가는 방법은 모르겠어서 그냥 전부 출력) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66..
ㄹㅇ개껌 Arrays.sort로 final_idx 정렬 높은값들 구하는 것은 식은 죽 먹기.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int []final_idx = new int[5]; int []final_pt = new int[5]; int []pt = new int[8]; for(..
당연히 혼자 절대 못품^^ 참조 : http://spillmoon.tistory.com/177 dp라서 점화식만 찾을 생각하다가 재귀함수를 쓴다는 것을 생각을 못했음 점화식으로 푸는 방법이 있는지조차 모르겠지만 나는 그나마 재귀로 풀이해야 코드 이해 가능한 수준임 (x,y)좌표부터 시작하여 move함수로 갈 수 있는데까지 다 돌려서 최대값을 뽑아내야함 그러기 위한 move함수 작성이 중요한데 혼자서 하려니까 절대 못했음 move함수 작성이 문제의 95프로인듯한 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ..
이게 문제가? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner (System.in); int N = sc.nextInt(); for(int i=0; ie-c) { System.out.println("do not advertise"); } if(r==e-c) { System.out.println("does not matter"); } if(r
배게
'알고리즘 풀이' 카테고리의 글 목록 (27 Page)