알고리즘

[Python] 없는 수가 뭘까 ? 빠진수 찾기

LeeSeunghyuk 2021. 1. 7. 10:32
반응형

 

1 2 3 4 5 6 8 9 10

 

" 다음 중 빠진 수는 무엇일까요 ? "

 

7

 

작은 범위이기에 눈으로 금방 파악

 

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20

21 22 23 24 26 27 28 29 30

 

그럼 조금 더 많은 30개 입니다.

벌써 보기가 싫어졌습니다.

 

심지어 정렬이 잘 되어 있어서 확인하기 더 편합니다.

 

실제 데이터는 ?

 

훨씬 큰 데이터

정렬 되지 않은 데이터

지저분한 데이터

 

우리가 다룰 데이터는 예쁘고 깔끔하지 않습니다.

다양한 데이터를 만지는 연습을 하는 것이 좋다고 생각합니다.

 

 

### Python 빠진 수 찾기

 

 

데이터 : [ 1, 2, 3, 4, 5, 6, 8 , 9, 10]

 

 

 

해당 범위에서 빠진 번호를 찾는 알고리즘을 구현해 보도록 하겠습니다.

 

 

 

방법 1. 반복문으로 확인

 

1~10까지의 새로운 범위 데이터 생성합니다.

반복문을 통해 데이터를 하나 하나 확인하는 것입니다.

data=[1,2,3,4,5,6,8,9,10]
check_list=range(1,11)

for i in check_list:
    if i not in data:
        print('빠진수는 %d입니다.'%i)

 

 

 

방법 2. 데이터 합으로 비교

 

데이터를 모두 더한 값으로 비교합니다.

 

data=[1,2,3,4,5,6,8,9,10]
check_list=range(1,11)

sum_data=sum(data)
sum_check_list=sum(check_list)
result=sum_check_list-sum_data

print('빠진수는 %s입니다.'%result)

 

 

 

방법 3. 수 범위 덧셈

 

프로그래밍을 공부할 때, 단순히 컴퓨터가 아닌

수학적 사고와 접근 방법이 필요한 걸 느낄 수 있는 풀이입니다.

 

ㆍ1 ~ n 범위의 합 : (n * (n+1))  / 2 

 

비교를 하기 위해 새로운 데이터 check_list를 만들었습니다.

하지만 체크 리스트가 없이도 빠진 수를 찾을 수 있습니다.

 

data=[1,2,3,4,5,6,8,9,10]

sum_data=sum(data)
check=int(10 * 11/ 2)

result=check-sum_data

print('빠진수는 %s입니다.'%result)

 

 

오늘은 간단하게 쉬운 알고리즘을 구현해 봤습니다.

 

건강 조심하시고 좋은 하루 되세요!

 

읽어주셔서 감사합니다.

 

 

 

 

 

 

반응형