-
[백준 10250번] ACM 호텔Algorithm/기타 2019. 12. 11. 20:53
백준알고리즘 10250번 : ACM 호텔
층별로 먼저 사람을 쌓았더라면 이해가 좀 더 쉬웠으련만,
호수별로, 즉 세로로 사람을 쌓다보니 머리가 잘 돌아가지 않았다.
호텔의 층, 층별 호실 수, 들어오는 사람의 순서
이렇게 3개를 받아서 해당 인원이 들어가야 할 적절한 호실을 출력하는 문제이다.
예를 들어 4, 5, 20인 경우,
층별로 5개의 호실을 갖고있는 4층 호텔에서 20번째 사람이 들어갈 적합한 호실은 405호가 되며.
다음으로 4, 5, 19인 경우,
층별로 5개의 호실을 갖고있는 4층 호텔에서 19번째 사람이 들어갈 적합한 호실을 404호가 된다.
배정 호실의 호수(가로 길이)가 10보다 작을 때는 0을 붙인다거나 하는 디테일만 더하면 어렵지 않게 풀 수 있다.
그리고, 문제를 풀고나니, 받는 세 정수 H, W, N 중에서 W는 안쓰고도 풀 수 있더라..
풀이 과정
1. H, W, N 세 정수를 받고, 층(floor)과 호수(ho)를 int 변수로 선언한다
2. 층(floor)은 N%H(N/H의 나머지) 값이다. 다만, 나누어 떨어진다면(0) N의 값이 층의 값이 된다.
3. 호수(ho)는 N/H +1 값이다. 다만, 이 역시 나누어 떨어진다면(N%H==0) +1을 할 필요가 없다.<< 백준알고리즘 10250번 반례 >>
3
1 1 1
4 4 4
3 15 42소스 ▽
더보기import java.util.Scanner; public class Main {// 10250번 ACM 호텔 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int testCase = Integer.parseInt(sc.nextLine()); int arr[] = new int[3]; for (int i = 0; i < testCase; i++) { for (int j = 0; j < 3; j++) { arr[j] = sc.nextInt(); } String roomNum = ""; int floor = 0; int ho = 0; if (arr[2] % arr[0] == 0) { floor = arr[0]; } else { floor = arr[2] % arr[0]; } if (arr[2] % arr[0] == 0) { ho = arr[2] / arr[0]; } else { ho = arr[2] / arr[0] +1; } if (ho<10) { roomNum += (floor) + "0" + (ho); }else { roomNum += (floor) + "" + (ho); } System.out.println(roomNum); } } }
'Algorithm > 기타' 카테고리의 다른 글
[백준 11721번] 열 개씩 끊어 출력하기 (0) 2019.12.15 [백준 1924번] 2007년 (0) 2019.12.15 [백준 4153번] 직각삼각형 (0) 2019.12.08 [백준 1546번] 평균 (0) 2019.12.07 [백준 17826번] 나의 학점은? (0) 2019.12.03