백준(Python) 풀이/구현

백준(Python) 4641번 Doubles 풀이

개발윗미 2021. 12. 1. 10:13

Python으로 구현한 4641번 Doubles 문제 풀이입니다.

 

https://www.acmicpc.net/problem/4641

 

4641번: Doubles

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

www.acmicpc.net


while True :
  data = list(map(int, input().split()))
  if len(data) == 1 and data[0] == -1 :
    break
  
  result = 0
  for i in range(len(data)-1) :
    if data[i] % 2 == 0 :
      if data[i] // 2 in data :
        result += 1

  print(result)

 

1. 입력받은 리스트의 길이가 1이고 첫번째 원소가 -1일 때까지 while문을 통해 반복 수행한다.

 

2. 반복문을 수행하는데, 리스트의 끝인 0은 리스트에 속하지 않기 때문에 범위를 len(data)-1 로 설정한다.

 

3. data 리스트의 값을 하나씩 확인하고, 그 값이 짝수일 경우 해당 값을 2로 나눈 몫이 리스트에 존재하는지 판단한다.

 

4. 몫이 리스트에 있을 경우 result 값을 1 증가시킨다.

 

5. for문 수행이 모두 끝나면 최종적으로 result 값을 출력한다.