내가 푼 방법
손님에게 방을 배정할 때 맨 앞 100~1000의자리 수부터 배정한다.
1번째 : 101
2번째 : 201
.
.
.
10번째 : 1001
여기서 H=10이면 11번째 : 102
이므로 우선적으로 봐야할 부분은 100~1000의 자리이다.
1~10의 자리는 N>H일 때 +1씩 늘어나게 되고 N<=H가 되는 순간 N값이 100~1000의 자리 숫자가 된다.
결국 주요 코드는 이렇게 진행된다.
if ( N > H )
(1~10의자리) + 1;
N -= H;
else
N x 100 + (1~10의자리);
if문이 직관적이므로 이걸로 설명을 했지만 이 if문이 반복되어야 하므로 while문을 사용할 것이다.
import java.util.Scanner;
public class Baek10250 { // ACM hotel
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int H = scan.nextInt();
int W = scan.nextInt();
int N = scan.nextInt();
int count = 1;
while(N>H) {
count += 1;
N -= H;
}
System.out.println(N*100 + count);
}
scan.close();
}
}
내가 푼 코드는 이렇게 된다.
scan을 닫지 않아서 noSuchElement 런타임 에러도 계속 나고... 문제가 많은 문제였다ㅠㅠ
남의 코드를 살펴보았는데 우선 StringBuffer를 사용하는 것이 효율이 높은 것 같아서
다음 알고리즘부터는 StringBuffer를 적극적으로 활용해야겠다.
그리고 반복문으로 빼나가지 말고 그냥 N % H를 해서 나머지를 100~1000의 자리로 하고 몫+1을 1~10의 자리로 하면 더 편한걸 알았다....^^
내가 푼거랑 일맥상통하는 풀이법인데 너무 직관적으로 문제를 본 것 같아서 아쉽다!
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 1978번 _소수찾기 for Java (0) | 2021.09.25 |
---|---|
[BaekJoon] 백준 1011번 _Fly me to the Alpha Centauri for JAVA (0) | 2021.09.24 |
[BeakJoon] 백준 10757번_ 큰 수 A+B for Java (0) | 2021.09.21 |
[BaekJoon] 백준 2839번_설탕 배달 for Java (0) | 2021.09.19 |
[BaekJoon] 백준 2775번_부녀회장이 될테야 for Java (0) | 2021.09.13 |