알고리즘 문제풀이/백준

#10250 : ACM 호텔

모항 2022. 4. 6. 17:50

풀이방법

사용된 것:

수학

 

2022.04.06

 

오답노트 #10250 : ACM 호텔

풀이방법 및 문제점 2022.04.06 주어진 예제에 올바른 답을 출력하는 코드(코드 A)는 쉽게 짤 수 있었다. 그러나 제출을 하면 틀렸다는 결과가 나왔다. 예외의 경우를 고려하지 못한 것이다. 아직도

blowupmomo.tistory.com

간단한 수학 문제이다. 나눗셈의 몫과 나머지를 활용하면 된다.

단, 나머지가 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