오도원입니다.

건강과 행복을 위하여

프로젝트/비버챌린지

01. 비브라그램

오도원공육사 2020. 5. 16. 02:13
반응형

비브라그램을 통해서 SNS(소셜 네트워크 서비스)와 같은 소프트웨어가 우리 삶에 미치는 영향에 대해 학습해보자.

 

1. 정보기술

정보기술은 컴퓨터와 인터넷을 통해서 다양한 형태의 정보를 만들고, 저장, 공유, 사용하는 필요한 모든 형태의 기술을 말한다.

 

# SNS(Social Network Service)

SNS는 인터넷상의 인간관계를 통해서 서로 소통할 수 있다. 또한 빠르게 지구 사회 곳곳의 소식을 전달한다. SNS는 우리 삶의 모습을 변화시킨 대표적인 기술 중 하나이다.

 

2. 도전! 비버챌린지

  • 동그라미는 학생을 나타낸다.
  • 연결선은 친구관계를 나타낸다.
  • 음표는 음악을 구매했다는 표시이다.

문제. 위 그림은 현재 월요일의 음악 구입 상태를 나타낸다. 화요일부터 매일마다 각 학생들은 자신의 친구 가운데 절반이상이 전날까지 음악을 구매했다면 이 학생도 음악을 구매한다.

 

> 모든 친구들이 음악을 구입하는 요일은?

1. 토요일  2. 목요일  3. 수요일  4. 일요일

 

 

3. 문제분석

현재 상태 : 학생들이 모두 같은 음악을 구입하는 요일을 모르는 상태

목표 상태 : 학생들이 모두 같은 음악을 구입하게 되는 요일을 아는 상태

 

# 핵심요소

  • 동그라미 : 학생을 나타낸다.
  • 연결선 : 친구관계를 나타낸다.
  • 음표 : 음악을 구매했다는 표시
  • 자신의 친구 중 절반이상이 전날까지 구매하면 자신도 구매

4. 문제풀이

월요일

  • 빌, 밥, 사라가 음악을 구입한 상태
  • 빌의 친구 : 톰, 밥, 테드, 킴, 사라
    • 밥, 사라는 이미 구입, [톰, 테드, 킴 확인]
  • 톰의 친구 : 빌(구입), 테드 - 절반이상 구입
  • 테드의 친구 : 빌(구입), 톰, 제인, 밥(구입) - 절반이상 구입
  • 킴의 친구 : 빌(구입), 사라(구입) - 절반이상 구입

화요일

아직 구입하지 않은 친구 : 제인, 안나, 조

  • 조의 친구 : 제인, 안나 - 절반이상 구입안함
  • 제인의 친구 : 테드(구입), 조 - 절반이상 구입
  • 안나의 친구 : 킴(구입), 조 - 절반이상 구입

# 수요일

현재 조만 구입안함

  • 조의 친구 : 제인(구입), 안나(구입) - 절반이상 구입

따라서 목요일이면 모든 친구들이 음악을 구입한다.

 

5. 문제 해결 결과

목요일이 되면 모든 친구들이 음악을 구입한다.

 

이 문제는 SNS를 통해 어떤 정보가 확산되는 개념의 문제이다. SNS에 연결된 주변인의 정보/의견/내용들이 변화됨에 따라, 그 사람의 정보/내용/의견도 변화된다는 것을 나타낸다.

 

6. 한걸음 더

 

7. 학습내용 정리

  1. 정보사회에서 소프트웨어를 통해 새롭게 생겨난 변화와 직업은 무엇이 있는가?
  2. 다른 친구들이 만든 비브라그램 문제를 풀어보자.
  3. SNS에 대한 자신의 경험을 반성해보자.

8. 파이썬으로 풀어보기

sns = {
    "톰" : ["빌", "테드"],
    '제인' : ['테드', '조'],
    '밥' : ['빌', '테드', '사라'],
    '빌' : ['톰', '밥', '테드','사라'],
    '테드' : ['빌','제인','밥'],
    '안나' : ['조','킴'],
    '사라' : ['빌','밥','킴'],
    '킴' : ['빌','사라'],
    '조' : ['제인','안나']
}

buy = {
    "톰" : 'X',
    '제인' : 'X',
    '밥' : 'O',
    '빌' : 'O',
    '테드' : 'X',
    '안나' : 'X',
    '사라' : 'O',
    '킴' : 'X',
    '조' : 'X'
}

week = ['월', '화', '수', '목', '금', '토', '일']

 

> 소스코드

더보기
def day(sns, buy, week):
    today = 1
    while 'X' in buy.values(): # 구매하지않은 사람이 없을 때 까지
        for k, v in sns.items(): 
            if buy[k] != 'O': # 구매하지않았다면
                count = 0 # 구매한 친구 수
                for friend in v:
                    if buy[friend] == 'O': # 친구가 구매했다면
                        count += 1 # 구매한 친구수 + 1
                if count >= len(v)//2: # 구매한 친구수가 총 친구수의 절반이상일 경우
                    buy[k] = 'O' # 자신도 구매
        today += 1 # 다음요일로 이동
    return week[today] 

print(f'모두가 음악을 구매하는 날은 {day(sns, buy, week)}요일 입니다.')

 

반응형

'프로젝트 > 비버챌린지' 카테고리의 다른 글

03. 점심 뭐 먹을까?  (1) 2020.05.16
02. 다이어그램  (0) 2020.05.16