728x90
문제
: N번째 손님이 배정받을 방을 고르시오
: 방 배정 순서는 높이우선 (즉, 101호실~N01호실 다 차면 102호~N02실 순으로 배정)
H: 호텔 높이
W: 층당 호텔 방 개수
N: 몇 번째 손님인지
문제 링크 : https://www.acmicpc.net/problem/10250
원리
1. 순서를 높이(층수)로 나눈 나머지 = 투숙객 층수
2. 순서를 높이(층수)로 나눈 몫+1 = 투숙객 호수
3. 엣지케이스 : 순서를 높이(층수)로 나눈 몫이 0일때, 1호 라인
나의 코드
1. 단순 엣지 케이스 잡아서 하는 연산 방식 [ 백준에서 뭔가 틀렸다고 함 ]
: 확실한 건 조잡하게 헛짓거리 한거 같긴함
더보기
import java.io.*;
import java.util.StringTokenizer;
public class no10250 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
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());
int W = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
if (N <= H) {
bw.write("" + N + "01\n");
continue;
}
int front = (N % H == 0) ? H : N % H;
int back = (H==W)? W : N / H + 1;
if (H*W==N) back = W;
bw.write("" + front);
if (back < 10) {
bw.write("0" + back + "\n");
} else {
bw.write("" + back + "\n");
}
}
bw.close();
}
}
2. 단순 삼항조건 [with 현타]
public class no10250 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
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 result = N%H==0? (H*100)+(N/H) : (((N%H)*100) + ((N/H) + 1));
bw.write(""+result+"\n");
}
bw.close();
}
}
레퍼런스 코드
더보기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt(); // 테스트 케이스
for(int i = 0; i < T; i++) {
int H = in.nextInt();
int W = in.nextInt(); // 쓸모없는 변수다.
int N = in.nextInt();
if(N % H == 0) {
System.out.println((H * 100) + (N / H));
} else {
System.out.println(((N % H) * 100) + ((N / H) + 1));
}
}
}
}
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
[백준] no11650: 좌표 정렬하기 (0) | 2023.01.18 |
---|---|
[백준] no15829: 해싱(Hashing) (0) | 2023.01.18 |
[백준] no10814: 나이순 정렬 (0) | 2023.01.15 |
[백준] no.2805: 나무자르기 (0) | 2023.01.13 |
[백준] no9012: 괄호 (0) | 2023.01.13 |