2017-02-12 3 views
-4

내가 더 주어진 공간을 사용하여 바닥을 찾아야했다 질문 건너 온 놓여있는 방에 바닥을 찾을 :은 방 번호 감안할 때, 다음과 같은 분포에 따라, 그것은 자바

floor rooms 
1  1-5 
2  6-15 
3  16-20 
4  21-30 
5  31-35 
6  36-45 

합니다. 방 번호를 "37"이라고 지정하면 프로그램은 "층 번호가 6"이라고 말해야한다고 가정합니다. 비록 내가 그것에 대한 해결책을 아래에 주었지만 나는 그 자체가 좋은 해결책이 아니라고 느꼈다. 바닥 수가 증가하면 실패 할 수도 있습니다.

int queryRoom = 37; 
    int totalFloor = 6; 

    int currentRm = 0; 
    int floorInQuestion = 1; // staring floor 

    while (floorInQuestion != totalFloor) { 
     if (floorInQuestion % 2 != 0) { 
      currentRm = currentRm + 5; 
     } else { 
      currentRm = currentRm + 10; 
     } 
     if (queryRoom <= currentRm) 
      break; 
     floorInQuestion++; 
    } 

    System.out.println(floorInQuestion); 
당신은 수학 공식을 사용할 수 있습니다
+2

그리고 당신이 가지고있는 ** 특정 ** 문제는 무엇인가? – QBrute

+0

[codereview.se]가이 질문에 더 적합한 장소 일 수 있습니다. –

+1

플로어 룸 배포에 대한 수학적 규칙을 추측 한 것으로 보입니다. 나는 방이 그런 수학적 규칙에 따라 배포 된 호텔을 본 적이 없다. 아마도 1 층에는 2 층에 존재하지 않는 기술 실이 있고, 3 층에는 2 층보다 큰 방이 있습니다. 수학적 규칙을 추론하려고 시도하지 않고 대신 간단히 목록을 갖습니다. 각 층에는 룸 번호가있는 범위 (또는 세트)가 있습니다. –

답변

0

:

int queryRoom = 37; 
queryRoom--; // create 0-based index 

int a = queryRoom/15; 
int b = queryRoom % 15; 

int floorInQuestion = (a * 2); 
if(b < 5) floorInQuestion++; 
else floorInQuestion += 2; 
+0

그런 경우 입력을 기반으로 수학 공식을 추론 할 필요가 없습니다. 분포가 불규칙 해지면이 솔루션은 토스 (toss)로 넘어갑니다. –

+0

코드에 기초한 수학 공식을 작성합니다. "분포가 고르지 않아서이 솔루션이 토스로 갈 것입니다." ? – algojava

+0

지금 당장 각 층에는 명확한 패턴이없는 경우에 대해 특정 수의 방이 있습니다. 이상적으로 그것은 방금 범위 검사에 기반한 솔루션이었을 것입니다. –