더 많이 실패하기

백준 10250번 ACM 호텔 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1 본문

알고리즘/백준

백준 10250번 ACM 호텔 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1

김발자~ 2022. 9. 12. 17:22
반응형

 

백준 7단계 5번 문제 - 10250 ACM 호텔

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

 

10250번: ACM 호텔

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

www.acmicpc.net

 

 

 


7. 기본 수학 1

(5) 백준 10250번 문제

ACM 호텔


문제



 

과정 생각해보기


n이 h보다 클 때

층수(y): 순서 n을 층수h로 나누었을 때 나머지

호수(): 몫 + 1

 

n이 h보다 작거나 같을 때

층수: n 그대로

호수: 무조건 1

 

인 거 같은데.. 그럼 너비는 고려 안 하게 되는 건가 싶지만 h+w가 항상 커야 성립되는 거 아닌가 싶다


 

오답


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int t = sc.nextInt();
        
        int y = 0;
        int x = 0;
        String y2 = "";
        String x2 = "";
        
        for(int i = 0; i < t; i++) {
            int h = sc.nextInt();
            int w = sc.nextInt();
            int n = sc.nextInt();
            
            if(n > h) {
                y = n % h;
                y2 = Integer.toString(y);
                x = (n / h) + 1;
                if(x < 10) {x2 = "0" + x;} else {x2 = Integer.toString(x);}
            }else {
                y = n;
                y2 = Integer.toString(y);
                x2 = "01";
            }System.out.println(y2 + x2);
        }
    }
}
cs

 

답은 잘 나오는데.. 

 

 

이렇게 한 줄로 써야만 테스트 케이스 개수에 맞게 출력할 수 있고

6 12 10 치고 엔터치면 그냥 바로 답이 출력된다

이게 문제인 것 같은데..!!


 

정답 인정 코드


https://st-lab.tistory.com/77

이 블로그를 참고했다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int t = sc.nextInt();
        
        
        for(int i = 0; i < t; i++) {
            
            int h = sc.nextInt();
            int w = sc.nextInt();
            int n = sc.nextInt();
            
            if(n % h == 0) {
                System.out.println((h * 100+ (n / h));
            }else {
                System.out.println((n % h) * 100 + (n / h) + 1);
             }
        }
    }
}
cs

 

100을 곱하면 굳이 문자열로 바꾸지 않아도 되었음을..

n이랑 h가 크거나 작을 떄가 문제가 아니라 나머지가 0인 때가 문제였음을..


 

직후 백지 복습


 

이해햇는지 알아보는 건 백지 복습이 최고인 것 같다

 

 

 


공책에 먼저 끄적이면서 해봤더니 규칙을 도출할 수 있었다

틀리긴 했지만 그래도 발견이 하나라도 있으니 발전한 것 같고, 재미도 있고 그렇다

반응형
Comments