풀이방법
사용된 것:
수학
2022.04.06
간단한 수학 문제이다. 나눗셈의 몫과 나머지를 활용하면 된다.
단, 나머지가 0인 경우와 그렇지 않은 경우를 나누어 생각해야 한다.
문제에서는 층 수(h), 한 층에 있는 방 개수(w), 방을 배정받을 고객의 순번(n)이 주어진다.
n번째 고객이 들어갈 방의 호수를 출력해야 한다.
w는 필요가 없다. h와 n만 가지고 계산하면 된다.
먼저, n%h를 한다.
n%h의 값이 0인 경우와 0이 아닌 경우로 나누어서 보아야 한다.
1. n을 h로 나눈 나머지가 0이 아닌 경우
n%h != 0 인 경우,
n번째 고객이 들어갈 방의 층 수는 n%h의 값과 같다.
그리고 호수의 뒷자리는 n을 h로 나눈 몫(n/h)의 값에 1을 더한 것과 같다.
2. n을 h로 나눈 나머지가 0인 경우
n%h == 0 인 경우,
n번째 고객이 들어갈 방의 층 수는 가장 꼭대기 층이다. 즉 h층이다.
그리고 호수의 뒷자리는 n을 h로 나눈 몫(n/h)의 값과 같다.
이러한 두 가지 경우를 조건문으로 잘 처리하여주면 문제가 해결된다.
코드
Java(2022.04.06)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for(int i = 0; i<t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int h = Integer.parseInt(st.nextToken());
st.nextToken();
int n = Integer.parseInt(st.nextToken());
int a, b;
if(n%h == 0) a = h;
else a = n%h;
if(n%h == 0) b = n/h;
else b = n/h +1;
System.out.print(a);
if(b<10)System.out.print(0);
System.out.println(b);
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#10814 : 나이순 정렬 (0) | 2022.04.11 |
---|---|
#1920 : 수 찾기 (0) | 2022.04.10 |
#2631 : 줄세우기 (0) | 2022.04.05 |
#9656 : 돌 게임 2 (0) | 2022.04.04 |
#2941 : 크로아티아 알파벳 (0) | 2022.04.02 |