728x90
문제
2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라.
예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4가 2의 2배, 18이 9의 2배이므로 답은 3이다.
입력
입력은 여러 개의 테스트 케이스로 주어져 있으며, 입력의 끝에는 -1이 하나 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 2~15개의 서로 다른 자연수가 주어진다. 각 자연수는 100보다 작으며, 리스트의 끝은 0으로 판별한다(0은 리스트에 속하지 않는다).
출력
각 테스트 케이스마다 한 줄에 걸쳐 정답을 출력한다.
풀이
8번째 줄의 while문은 테스트 케이스가 몇개가 들어올지 모르기 때문에 -1이 입력될때까지 반복적으로 수행
14번째줄의 while문은 서로 다른 자연수가 몇 개가 들어올지 모르기에, 들어오는 자연수를 저장하기 위함.
입력받은 값을 배열을 이용하여 값의 존재 유무를 판단한다.
입력되는 값은 최대 100까지만 저장되기에 50까지만 판단하면 50*2 = 100이기에
2배가 되는 값이 있는지는 1부터 50까지만 검사한다
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
boolean [] arr = new boolean[101];
int temp=Integer.parseInt(st.nextToken()), cnt=0;
if(temp==-1)
break;
while(st.hasMoreTokens()) {
arr[temp]=true;
temp=Integer.parseInt(st.nextToken());
}
for(int i=1;i<=50;i++)
if(arr[i] &&arr[i*2])
cnt++;
bw.write(cnt+"\n");
}
bw.close();
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 1075 나누기 JAVA (0) | 2022.05.27 |
---|---|
Baekjoon 1356 유진수 JAVA (0) | 2022.05.27 |
Baekjoon 1668 트로피 진열 JAVA (0) | 2022.05.27 |
Baekjoon 1076 저항 JAVA (0) | 2022.05.22 |
Baekjoon 4396 지뢰 찾기 JAVA (0) | 2022.05.18 |
댓글