●문제
● 풀이
층(h)만큼 n01호부터 차례대로 배정하고 n번째 손님의 호수를 출력하는 문제.
첫 풀이의 오류 : 계산을 402호일 때 층부분(4), 호수부분(2) 따로 계산해서 출력하느라 출력이 402호로 나와야 하는데 42로 나옴. 그렇다고 아래 코드처럼 0을 붙이면, 큰 수의 예시일 때 0이 들어가지 않는 호수도 있을 거임.
아예 xx, yy으로 두자리의 숫자로 정해놓는건 어떻게 하는지 알아봐야함
import java.util.*;
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();
int xx = n%h;
int yy = (n/h)+1;
System.out.println(xx+"0"+yy);
}
}
}
두번째 풀이
뒤 호수 부분만 2자리로 지정해두면 되기에 String.format("%02", int a) 를 하면 두자리로 나오는 코드를 알아서 써봤는데, 출력도 멀쩡히 되지만 백준 제출에서 틀렸다고 나옴.. 왜지 ? 이유를 모르니
import java.util.*;
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();
int x = n%h;
int y = (n/h)+1;
String yy = String.format("%02d", y);
System.out.println(x+yy);
}
}
}
최종 풀이!
내가 간과한 사실이 있었다. n%h==0일 때, 층는 0, 호수 부분은 +1을 해주면 안되는 것이었다..그래서 아래와 같이 n%h = =0 부분 조건을 걸어주었다.
import java.util.*;
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();
int x,y;
if (n % h == 0) {
x = h;
y = n/h;
} else {
x = n % h;
y = (n / h) + 1;
}
String yy = String.format("%02d", y);
System.out.println(x + yy);
}
}
}
느낀 점 : 입력 예시에 없는 부분에 대한 오류가 나면 멘붕이 심하다.. 분명 예시 입력에는 맞는 출력이 나오는데,, 이렇게 싸피도 accept하고 넘어갔지만 틀린 부분이 있었을지도,, 이렇게 많은 문제 풀어보면서 오류가 날 만한 부분을 찾아가는 것도 연습해야겠다!
'백준' 카테고리의 다른 글
[백준] 2292 벌집_ JAVA (0) | 2023.06.03 |
---|---|
[백준] 2231 분해합_ JAVA (0) | 2023.06.03 |
[백준] 1978 소수 찾기_ JAVA (0) | 2023.06.03 |
[백준] 1085 직사각형에서 탈출_ JAVA (0) | 2023.06.02 |
[백준] 4153 직각삼각형 _ JAVA (0) | 2023.06.02 |