| 문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
| 입력
입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
| 출력
각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
package Study;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class A5086_study {
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
//출력형식에 맞게 출력하기 위해 String을 가변적으로 사용할 수 있는 StringBuilder에
//출력값들을 추가했다가 마지막에 sb.toString으로 출력
StringBuilder sb=new StringBuilder();
//break는 loop문이나 switch문 외부에선 사용할 수 없어서 조건이 참일 때의 while 루프를 써준다.
while(true) {
try {
StringTokenizer st=new StringTokenizer(bf.readLine());
int first_su=Integer.parseInt(st.nextToken());
int second_su=Integer.parseInt(st.nextToken());
if(first_su==0 && second_su==0) {
break; //break는 loop or switch문 밖에서 사용할 수 없다.
}
if(second_su%first_su==0) {
sb.append("factor\n");
}else if(first_su%second_su==0) {
sb.append("multiple\n");
}else {
sb.append("neither\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(sb.toString()); //StringBuilder에 저장해놓은 값 출력
}
}
| 느낀점
문자열 String 형태를 가변적으로 조정했다가 출력할 수 있는 StringBuilder에 대해 알 수 있어서 좋았다. StringBuilder vs StringBuffer vs String의 차이점에 대해 알아보도록하자!
(String VS StringBuilder VS StringBuffer : 링크텍스트)
그리고 오랜만에 자바 하니까 break에 대한 조건도 잊고 있었는데 break는 loop문이나 switch문 밖에선 쓸 수 없다는 점 잊지말자!