문제 번호 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 |
댓글을 사용할 수 없습니다.