21.06.24 기록
-
백준 알고리즘 10250 풀이
-
- 오답 - 생각해본 로직
- 각 층을 다 채우고 다음 층을 채우는 것이 아닌, 각 층의 낮은 호실부터 채운다.
- (1)N이 H보다 같거나 작은 경우 → N번째 층의 1호실
- (2)N이 H보다 큰 경우 → (N%H)층의 (N/H+1)호실
- (3)마지막 방인 경우(N%H == 0) → H층의 W호실
- 오답 - 생각해본 로직
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class B10250 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int testCase = Integer.parseInt(br.readLine()); for(int i = 0; i < testCase; i++) { st = new StringTokenizer(br.readLine(), " "); int H = Integer.parseInt(st.nextToken()); int W = Integer.parseInt(st.nextToken()); int N = Integer.parseInt(st.nextToken()); int share = N/H; int remainder = N%H; //1. 마지막 방인 경우 if(remainder == 0) { sb.append(H); if(W < 10) { sb.append("0"); } sb.append(W); } //2. 1호실 초과인 경우 else if(H < N) { sb.append(remainder); if(share < 10) { sb.append("0"); } sb.append(share+1); } //3. 1호실인 경우 else { sb.append(N + "01"); } sb.append("\n"); } System.out.println(sb); } }-
- 해설(메모리 14.2MB, 시간 132ms로 통과)
- 로직은 비슷하게 생각해서 이해하는 데 크게 어렵지 않았다. 다만, 출력할 때 값을 너무 1차원적으로만 생각한 것 같다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class B10250 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int testCase = Integer.parseInt(br.readLine()); for(int i = 0; i < testCase; i++) { st = new StringTokenizer(br.readLine(), " "); int H = Integer.parseInt(st.nextToken()); st.nextToken(); int N = Integer.parseInt(st.nextToken()); int share = N/H; int remainder = N%H; if(remainder == 0) { sb.append(H*100 + share); } else { sb.append(remainder*100 + (share+1)); } sb.append("\n"); } System.out.println(sb); } } -