본문 바로가기
Algorithm/Baekjoon

Baekjoon 4641 Doubles JAVA

by Hunveloper 2022. 5. 27.
728x90
 

4641번: Doubles

2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라. 예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4가 2의

www.acmicpc.net

문제

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

댓글