본문 바로가기

알고리즘/SW익스퍼트 아카데미

(2)
8993. 하지 추측 하지가 할일없이 영감받아서 문제만든 문제 원본은 콜라츠 추측이라는데 모든 자연수 N에 대해 아래 while문을 탈출할수 있다 라는 추측 증명하는건 사실상 불가능하다고 한다. while (N > 1){ if (N mod 2 == 0) N := N / 2 else N := 3 * N + 1 } 콜라츠추측 위키설명 링크 여기서 := 기호는 대입연산자 즉 앞에 값에 뒤에 값을 대입하겠다로 N := N / 2는 N = N / 2랑 같다 하여튼 하지가 심심했는지 여기서 영감을 받아서 N := 3 * N + 1 을 N := 3 * N + 3 으로 바꾸었을때에도 만족하는지 알아보려고한다. 주어진 N에 대해 while문 탈출할수 있으면 YES 아니면 NO를 출력하는 문제 N 은 1 ~ 10^14 (100조) while ..
8988. 세운이는 내일 할거야 게으른 세준이가 최대한 미루다가 과제를 할때 언제부터 과제를 시작해야되는지 구해야 되는 문제 각 과제의 제출기한과 과제에 소요되는 시간이 주어진다. 바로 받으면서 하기 힘들어 보이는게 결국 앞에 값을 어딘가 저장해놔야 된다고 생각 됨 ㅇ ㅇ ㅇ ㅇ ㅇ ㅇ ㅇ 위와 같이 징검다리로 주어지다가 이걸 덮어버리는게 나오면 시작날짜가 그만큼 앞으로 가야됨 근데 배열에 이걸 저장해놓자니 제출날짜가 최대 10^9 Integer배열로 만들면 최악의 경우 배열 메모리만 4byte * 10^9 = 4,000,000,000 (약 4기가)로 터짐 그래서 푼 방법은 일단 내부에 소요기간, 제출기한 가지고 있는 Assign class를 만듬 그리고 모든 과제에 대한 정보를 ArrayList에 Assign class로 저장한 뒤 ..