최대 1 분 소요

[백준 4641번] Doubles

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class 백준_손수경_정답_4641 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            String n = br.readLine();
            ArrayList<Integer> listNum = new ArrayList<>();
            if (n.equals("-1")) {
                break;
            }
            String[] temp = n.split(" ");
            for (String i : temp) {
                if (i.equals("0")) {
                    break;
                }
                listNum.add(Integer.valueOf(i));
            }
            int cnt = 0;
            for (int i : listNum) {
                if (listNum.contains(i * 2)) {
                    cnt++;
                }
            }
            System.out.println(cnt);
        }
    }
}
 
cs

풀이 방법

먼저 br로 받는 값은 문자열이기 때문에 -1인지 아닌지 판별도 정수형이 아닌 문자열로 해야된다. 그리고 -1이 아니라면 공백만큼 쪼개서 배열로 넣는다. 배열에 들어있는 문자(데이터 형은 문자열)을 비교를 통해서 0이 아닌 다른 값들은 listNum에 넣어준다. ArrayList를 사용한 이유는 contains 메서드를 사용하기 위함이다. contains 메서드의 리턴값은 true/false이므로 조건문을 통해서 2배의 값이 포함된다면 카운트를 하는 것으로 코드를 짰다.

댓글남기기