< 문제 >
https://www.acmicpc.net/problem/1075
1075번: 나누기
첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class p1075 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
int f=Integer.parseInt(br.readLine());
int answer=0;
n=n/100*100; //뒤의 두 자리를 00으로 바꿔줌
while(true) {
if(n%f==0) {
answer=n%100;
break;
}
else
n++;
}
if(answer<10) //한 자리이면 앞에 0 붙여서 출력
System.out.println("0"+answer);
else
System.out.println(answer);
}
}
✏️ 풀이 방법
ex ) n=428392 , f =17인 경우
1. n / 100 * 100을 통해 n의 뒷자리 2개를 0으로 바꿔줌
428392 / 100 * 100 = 428300
2. n이 f로 나누어 떨어질 때까지
n을 증가시키면서 반복문 돌기
428315 % 17 ==0 이므로 answer = 428315 % 100 =>15
3. 만약 answer이 한 자리 수라면, 앞에 0을 붙여서 출력하기
✍🏻 느낀점
처음에 너무 어렵게 생각을 했다. 뒷 자리 2개를 0으로 바꿔야 된다는 생각에
String으로 접근을 하고, 계산이 필요한 부분에서는 int형으로 바꿔주고
계속 이런 형변환 작업을 하다보니 코드가 아주 지저분해졌다.
그리고 한 자리 수일 때, 앞에 0을 붙여주는 조건에서도
그저 출력 형식만 지켜주면 되는건데
값 자체를 아예 바꿔줘야된다고
복잡하게 생각했다.
아직 문제 풀이 경험이 부족해서 이런 저런 실수도 하고
너무 어렵게 생각을 하는 것 같다.
오늘 배운 점을 잊지 말고 다음부터는
똑같은 실수를 하지 않도록 해야겠다.
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[JAVA] 백준 18429번: 근손실 (1) | 2024.03.11 |
---|---|
[JAVA] 백준 1966번: 프린터 큐 (1) | 2024.03.08 |
[JAVA] 백준 1212번: 8진수 2진수 (0) | 2024.01.11 |
[JAVA] 백준 1032번: 명령 프롬프트 (1) | 2024.01.08 |
[JAVA] 백준 1009번: 분산처리 (1) | 2024.01.08 |