day5 백준 10250번 : ACM 호텔 [Java]

문제출처

https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

import java.util.Scanner;
public class day005_Q10250 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		int[] H = new int[T];
		int[] W = new int[T];
		int[] N = new int[T];
		
		for(int i = 0; i < T; i++) {
			H[i] = sc.nextInt();
			W[i] = sc.nextInt();
			N[i] = sc.nextInt();
		}
		
		for(int i = 0; i < T; i++) {
			int room;
			int floor = N[i] % H[i];
			int num = (N[i] / H[i]) + 1;
			
			room = floor * 100 + num;
			System.out.println(room);
		}
		
		sc.close();
	}

}

 

오늘도 어김없이 틀린 코드로 시작한다.

이 코드의 문제는 데이터가 2 10 2와 같이 N이 H로 나누어 떨어지는 경우에 나머지가 0이되어서 floor가 없어지는 문제가 발생했다.

 

import java.util.Scanner;
public class day005_Q10250 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		int[] H = new int[T];
		int[] W = new int[T];
		int[] N = new int[T];
		
		for(int i = 0; i < T; i++) {
			H[i] = sc.nextInt();
			W[i] = sc.nextInt();
			N[i] = sc.nextInt();
		}
		
		for(int i = 0; i < T; i++) {
			int room, floor, num;
			
			if(N[i] % H[i] == 0) {
				floor = H[i];
				num = N[i] / H[i];
			}
			else {
				floor = N[i] % H[i];
				num = (N[i] / H[i]) + 1;
			}
			
			room = floor * 100 + num;
			System.out.println(room);
		}
		sc.close();
	}
}

그래서 나누어 떨어지는 경우와 아닌걸로 나눠서 풀었고 맞았다.

 

for문 굳이 두번 안쓰고 배열도 안쓰고도 풀수있을거 같아서 다시 해봤다.

 

import java.util.Scanner;
public class day005_Q10250 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		int H, W, N;
		
		for(int i = 0; i < T; i++) {
			H = sc.nextInt();
			W = sc.nextInt();
			N = sc.nextInt();
			
			int room, floor, num;
			if(N % H == 0) {
				floor = H;
				num = N / H;
			}
			else {
				floor = N % H;
				num = (N / H) + 1;
			}
			
			room = floor * 100 + num;
			System.out.println(room);
		}
		sc.close();
	}
}

출력문 자체만 보면되니까 이것도 틀린건 아니고 맞았다.

myoskin