문제는 간단하다. 그림처럼 층 수가 6층이고, 각 층의 방 수가 12개일 경우,
101, 201, 301 ~ 601, 102, 202, ~ 602...왼쪽부터 위로 올라가면서 채우면 된다.
이 문제를 보고 생각한 논리는 먼저
두가지였다.
그거를 바탕으로 코드를 짰다.
하지만 문제가 계속 생겼는데, h == n일 경우 위의 식이 통하지 않았다.
예를 들어 12 6 12일 경우에 1201호가 나와야 하지만, 그러지 않았기에 분류를 해주었다.
계속해서 문제가 생겼는데, h < n이면 n % h 로 층수가 나와야 하지만, n % h == 0일 경우에 또 문제가 생긴다. 따라서 분류 속 분류를 해주었다.
계속 이런식으로 하나가 잡히면 하나가 망가져서 코드가 길어졌다.
#include <stdio.h>
int main()
{
int i;
int result;
int t,h,w,n;
scanf("%d", &t);
i = 0;
while (i < t)
{
scanf("%d %d %d", &h, &w, &n);
if(h == n)
{
result = h * 100 + 1;
printf("%d\n", result);
}
else if(h < n)
{
if (n % h == 0)
{
result = h * 100 + n / h;
printf("%d\n", result);
}
else
{
result = n % h * 100 + n / h + 1;
printf("%d\n", result);
}
}
else
{
result = n * 100 + n / h + 1;
printf("%d\n", result);
}
i++;
}
}
#include <stdio.h>
int main(void)
{
int t, h, w, n, i;
scanf("%d", &t);
for (i = 0; i < t; i++)
{
scanf("%d %d %d", &h, &w, &n);
if (n % h == 0)
printf("%d%02d\n", h, n / h);
else
printf("%d%02d\n", n % h, n / h + 1);
}
return 0;
}
출처: https://travelerfootprint.tistory.com/40 [나그네의 발자취]
논리는 같다. 나도 이 분 같이 n / h 와 n % h를 생각했다.
지금 내 코드를 다시 보니 케이스를 분류했지만, 중복되는 내용이 있다. 따라서 더 간결하게 할 수 있었다.
너무 문제를 푸는데에만 급급한 것 같다. 푸는 건 좋은데, 끝나고 한번 짧게 정리를 할 수 있는지 생각하는 시간을 가져보자.