문제 번호 10250번 : ACM 호텔 - JAVA [자바]
https://www.acmicpc.net/problem/10250
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
문제 설명
간단하게 말해 왼쪽 아래서부터 채워지는 호텔에서 N 번째 손님은 몇 호를 쓰게 되는지 묻는 문제입니다.
층수와, N 번째, 한 층에 몇 호가 있는지를 알 수 있습니다.
문제풀기
먼저 층수를 구하겠습니다.
층수는 N을 층수로 나눈 나머지입니다.
먼저 들어온 손님이 왼쪽부터 위로 채워지고 다 채워지지 않는 마지막 끝에는 나머지 수만큼 올라가기 때문에 나머지가 층수가 됩니다.
이때 주의해야 할 점이 있습니다.
*나머지가 0일 경우입니다.
나머지가 0 이게 되면 층수가 0으로 출력됨으로 이것을 방지하기 위해
나머지가 0인 이유는 마지막 층수에 손님이 채워진 것임으로 층수(h)를 층수로 출력해 주면 됩니다.
그다음 호수를 구합니다.
호수는 N을 층수로 나눈 값의 +1을 해주면 됩니다.
손님은 1층부터 차례로 채워짐으로 모든 층의 1호가 다 채워지게 되면 2호가 채워지기 시작하고 2호가 다 채워지면 3호가 채워지기 시작함으로 N을 층수로 나눈 값의 +1을 해주면 됩니다.
여기서도 주의해야 할 점이 있습니다.
*나머지가 0일 경우입니다.
나머지가 0일 경우 호수가 나머지로 인해 바뀌지 않을 것임으로 +1을 해주지 않아도 됩니다.
위에 두 개가 같은 조건이 있음으로 if 문 하나로 처리할 수 있습니다.
정답
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int last = 0;
int first = 0;
int testNum = sc.nextInt();
for(int i=0; i<testNum; i++) {
int h = sc.nextInt();
int w = sc.nextInt();
int n = sc.nextInt();
if(n%h == 0) {
last = n/h;
first = h;
}
else {
last = n/h+1;
first = n%h;
}
System.out.println((first*100)+last);
}
}
}
층수는 100을 곱해주고 호수는 덧셈을 해주므로 정확한 호수를 출력할 수 있습니다.
'알고리즘 > 백준 문제 및 정답' 카테고리의 다른 글
문제 번호 2839번 : 설탕 배달 - JAVA [자바] (0) | 2022.03.04 |
---|---|
문제 번호 2775번 : 부녀회장이 될테야 - JAVA [자바] (0) | 2022.03.01 |
Bronze V 문제 번호 9653번 : 스타워즈 로그 - JAVA [자바] (0) | 2022.02.01 |
Bronze V 문제 번호 8393번 : 합 - JAVA [자바] (0) | 2022.01.31 |
Bronze V 문제 번호 8370번 : Plane - JAVA [자바] (0) | 2022.01.31 |