알고리즘 풀이

예외는 M이 1인 경우입니다. 1 1 -> 결과 : -1 1 3 -> 결과 : 52 sosu라는 변수를 통해 일단 sosu라고 가정한 후sosu가 아닌 조건 즉, 숫자가 1이라 count가 1인 경우와count가 2일 때, 해당 값까지 for문이 미치지 못한 경우를구분하여소수일 때만 sum값에 더해주면 됩니다.최소값을 편하게 구하기 위해 큰 값부터 소수판별을 시작해서 작은 값으로내려갑니다. 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 42import java.util.*; public class Main { public static void mai..
너무 어려웠습니다. 반례 예시는 해당문제의 질문검색 나와있는https://www.acmicpc.net/board/view/21503 를 참조하였고 알고리즘의 전반적인 틀은http://andamiro25.tistory.com/93 를 참조하였습니다. 문제에서 요구하는 (x,y)가 몇 번째 해인지 찾는 가장 쉽고 무식한 방법은N부터 1씩 증가하시키는 경우입니다. 하지만 M,N의 최대값이 40000이기 때문에while문을 최대 40000*40000번을 돌리는 경우가 생겨시간초과할 것이 분명하므로 패스하였습니다. 도저히 풀이법을 못찾아서 구글링하다 찾은 방법은의 x와 y중 작은 값 하나를 고정시키는 방법입니다.이를 이용하면 while문은 최대 약 40000번까지만 돌리면 모든 경우의수를 해결할 수 있습니다. 이..
소수의 조건에 일치하는, 즉 1과 자기자신으로만 나누어지는수를 counting하여 마지막에 그 수를 출력해줍니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int input; int res=0; int mok, mok_0; for (int i=0; i
문제에서 움직이는 우주선의 특징을 이용하여규칙을 찾아내야 합니다.저 같은 경우는 연습장에 차근차근 써 봤습니다.거리 1부터 7까지 최소한의 도약 횟수를 문제로 써보다보니규칙 하나를 찾을 수 있었습니다.x개의 자리를 가진 숫자의 MAX값의 집합에는 이러한 규칙이 있습니다. 1자리 1 -> null 1 null2자리 1 1 -> null 1 1 null3자리 1 2 1 -> null 1 2 1 null4자리 1 2 2 1 -> null 1 2 2 1 null5자리 1 2 3 2 1 -> null 1 2 3 2 1 null6자리 1 2 3 3 2 1 -> null 1 2 3 3 2 1 null7자리 1 2 3 4 3 2 1 -> null 1 2 3 4 3 2 1 null .... .... 보시면 처음 시작을 ..
테스트 케이스 개수를 정수 T로 받고층과 호수의 크기를 저장할 2차원 배열 a를 선언합니다T의 개수만큼 각각 3개의 숫자 정보( 층, 호수, n번째 손님)을 저장할 수 있고,YY, XX변수로 n번째 손님의 층과호수를 저장하여res배열에 조합하여 저장합니다. for문을 2개 돌려서층부터 증가시켜주되 현재 층수가 정해진 층수를 넘어가면1층으로 되돌아가 호수를 1번 counting해줍니다. 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 39import java.util.*; publi..
숫자세트가 가진 성질 중 6과 9를 서로 바꿀 수 있다는 점에 주목해야합니다.이 때문에 2번 틀렸습니다. 반례) 9900666 -> 결과값 : 3 900966 -> 결과값 : 2 각 자리 값을 저장할 배열을 선언해 주고,자리값을 앞부분부터 뒷부분 까지 parsing하여 index에 맞춰서 counting을 해줍니다. 이 때 중요한 점은 6과 9입니다.6과9의 총 개수가 2개일 경우 1세트, 4개일 경우 2세트, 6개일 경우 3세트 ..1개일 경우 1세트, 3개일 경우 2세트, 5개일 경우 3세트.. 숫자 하나가 남지만 세트를 추가해줘야하는 홀수개수의 경우 때문에경우에 따라 조건문을 사용하여 need배열에 다시 재정의해서 넣어줍니다.이 때 이미 need[6] 즉 6이 필요한 개수를 이미 정의했으므로need..
층과 호수를 저장할 2차원 배열 a를받아온 T의 개수만큼 선언해줍니다.그리고 그 아파트 층, 호수에 맞는 사람이 저장될res 배열을 선언합니다. 아파트에 사는 인원의 규칙은 “a 층의 b 호에 살려면 자신의 아래(a-1)층에 1호부터 b 호까지 사람들의 수의 합만큼 사람들을 데려와 살아야한다”인데 저는 이걸 0~2층 1~5호까지 숫자로 적어보니 a층의 i호수의 인원수는 a-1층 i호수와 a층 i-1호수의 인원 수를 합한 것과 같다라는 규칙을 찾았습니다. 이전 호수와 이전 층이 없는 0층과 1호수 부분을 제외하고위의 규칙을 재귀함수를 불러내는 식으로 정의해주시면 됩니다. 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 2..
문제에서 요구하는 X번째 분수만을 찾는 경우로 제한하면훨씬 간단하게 코딩이 가능합니다 전 무식하게 모든분수를 출력하는 반복문에서마지막 분수만 출력하도록 if문으로 조건을 줬습니다. 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 46import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int X = sc.nextInt(); int a=1,b=1; int pre_num=1; i..
a1 = 1a2 = 1 + 6a3 = 1 + 6 + 12a4 = 1 + 6 + 12 + 18 ... 다음과 같은 규칙을 갖고 있으므로1을 시작으로 하여 범위 값을 증가시킬 때마다6이 증가된 값을 넣어주어야하합니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int input = sc.nextInt(); int n=1; int add=0; int result=1; while(n
ArrayList로 받는 이유는중복되는 책들 때문에 배열의 크기가 정확하게 정해지지 않았기 때문입니다. books_array로 중복되지 않는 책들의 집합들을 저장합니다저장한 index에 맞추어서 책의 개수를 저장할idx또한 counting 해줍니다. 이 때, 책의 개수가 최대인 책의 index를max변수에 저장해두는 식을 적어줍니다. max의 값과 동일한 수의 책들의 집합을 res_array에 넣어주고,사전순으로 Sorting 후에가장 맨 앞의 책을 출력해줍니다. 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 33import java.util.*; public class Main { public ..
배게
'알고리즘 풀이' 카테고리의 글 목록 (31 Page)