❓문제
https://www.acmicpc.net/problem/10250
🔅해석
배정될 방의 행과 열을 구하는 문제로 층과 행에서 몇변째 방인지를 구해 합친 결과를 내야한다.
1. 행 구하기(floor)
행은 높이(height)에서 n번째를 나눈 나머지 값이 층 높이(floor)가 나온다.
예를 들어, 높이가 6이고 n번째가 10이라면 6/10 = 1.4 이므로 나머지 값이 4가 높이가 된다.
단, 높이와 n번째의 값이 같다면 나머지 값이 0이 나오는데 이런 경우는, 높이 값만큼 층을 배정해주면 되니깐 floor는 height 또는 n이 된다.
2. 열 구하기(room)
열은 n번째에서 높이(height)를 나눈 값 +1 이 room이 된다.
예를 들어, 높이가 6이고 n번째가 10이라면 6/10 = 1.4 이므로 몫 값 +1 한 2가 호실이 된다.
단, 높이와 n번째의 값이 같다면 나머지 값이 0이 나오는데 이런 경우는 1를 더해 줄 필요없이 n번쩨에서 높이(height)를 나눠주면 된다.
+) 반례
2
10 10 100
10 10 91
------------
1010
110
1
1 10 9
------------
109
⭕정답 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T = Integer.parseInt(br.readLine()); //테스트 데이터
int height =0; //호텔 층 수
int width =0; //호텔 한 층당 방의 수
int n=0; //n번째 손님
int floor =0;
int room =0;
int[] result = new int[T]; //결과를 담는 배열
for (int i = 0; i < T; i++) {
st = new StringTokenizer(br.readLine());
height = Integer.parseInt(st.nextToken());
width = Integer.parseInt(st.nextToken());
n = Integer.parseInt(st.nextToken());
floor = n % height;
room = n / height +1;
if (floor == 0) {
floor = height;
room = n/height;
}
result[i] = (floor *100) + room;
}
for (int num : result) {
System.out.println(num);
}
}
}
❗결과
'코딩테스트 > 백준' 카테고리의 다른 글
[코테] 백준 20188번 : 등산마니아 (java) (2) | 2023.12.07 |
---|---|
[코테] 백준 2798번 : 블랙잭 (java) (0) | 2023.11.22 |
[코테] 백준 2587번 : 대표값2 (java) (0) | 2023.10.28 |
[코테] 백준 25206번 : 너의 평점은 (java) (0) | 2023.10.28 |
[코테] 백준 29813번 : 최애의 팀원 (java) (0) | 2023.09.24 |