백준 10250번 규칙찾기/ACM 호텔
2019. 1. 16. 14:55ㆍProgramming/Algorithm
반응형
문제: ACM 호텔
다음과 같은 순서로 방 번호가 배정됨을 알 수 있다.
… | … | … | … |
---|---|---|---|
601 | 602 | 603 | … |
501 | 502 | 503 | … |
401 | 402 | 403 | … |
301 | 302 | 303 | … |
201 | 202 | 203 | … |
101 | 102 | 103 | … |
여기서 방번호를 YXX라고 뒀을 때, Y값은 N%H임을 알 수 있다. (단, N%H이 0일때 Y값은 H이다.) Y값을 구했으니 X값의 규칙성을 찾으면 된다.
위에 주어진 테이블에서 다음과 같은 규칙성이 있음을 알 수 있다.
- XX=1일 때, N의 범위는 1~H이다.
- XX=2일 때, N의 범위는 H+1~2H이다.
- XX=3일 때, N의 범위는 2H+1~3H이다.
- XX=4일 때, N의 범위는 3H+1~4H이다.
- XX=k일 때, N의 범위는 (k-1)H+1~kH이다.
따라서 (k-1)H+1 <= n <=kH를 만족하는 k값을 찾으면, x값을 구할 수 있다. 전체 내용을 정리하면 다음과 같다.
h, w, n이 주어졌을 때
- y는 n%h이다. 단, n%h==0이면 n=h이다.
- (k-1)h+1<=n<=kh를 만족하는 k값을 찾는다.
- y, x값을 양식에 맞게 출력한다.
이를 코드로 작성하면 다음과 같다.
#include <stdio.h>
int main()
{
int input_count = 0;
int width, height, n = 0;
int index=0;
int y=0, x=0, k=1;
scanf("%d", &input_count);
for(index=0; index<input_count; index++) {
width=0, height=0, n=0, x=0, y=0, k=1;
scanf("%d %d %d", &height, &width, &n);
y = (n%height);
if(y==0) {
y=height;
}
while(!(((k-1)*height+1) <= n && n <= (k*height))) {
k++;
}
x = k;
printf("%d%02d\n", y, x);
}
return 0;
}
계속해서 규칙찾기 항목의 문제만 풀다보니 시간이 좀 줄어들긴 했다. 아직 한시간씩 걸리기 때문에, 문제에 좀 더 익숙해져야 할 필요가 있어보인다.
반응형
'Programming > Algorithm' 카테고리의 다른 글
백준 2775번 규칙찾기/부녀회장이 될테야 (0) | 2019.01.17 |
---|---|
백준 1924번 규칙찾기/2007년 (0) | 2019.01.17 |
백준 1011번 규칙찾기/Fly me to the Alpha Centauri (0) | 2019.01.15 |
백준 1193번 규칙찾기/분수찾기 (0) | 2019.01.14 |
백준 2292번 규칙찾기/벌집 (0) | 2019.01.12 |