상세 컨텐츠

본문 제목

피로그래밍 14기: day0 <피로그래밍 지원, 합격>

환 codes web/Project

by 퍼블리셔환 2021. 1. 6. 15:39

본문

 

 

지난 2020년 여름방학부터 웹을 코딩하는 법에 대해서 배우고 싶다는 생각이 들었습니다.

 

마침 좋은 기회에 에브리타임에서 피로그래밍 14기 모집 공고를 확인했고, 처음 봤을 때 부터 꼭 이 동아리에 들어서 열심히 방학동안 활동하고 싶다고 생각했습니다. 

피로그래밍 14기 모집 포스터

그래서 시험기간이었지만 열심히 자소서를 썼고, 코딩테스트도 풀었습니다. 

 

#서류심사

자기소개서에서는 별다른 이력이나 스펙을 이야기하는 것 보다 제가 이 동아리를 얼마나 하고 싶은지에 대해서 진실성있게 쓰는 것이 더 좋을 것 같다고 생각했습니다. 그래서 내가 왜 웹 코딩을 하고 싶은지, 웹 코딩을 배우면 앞으로 어떻게 적용할 것인지, 동아리에서 나를 뽑으면 어떤 점을 내가 동아리에게 줄 수 있는지 등에 대해서 작성했습니다. 

 

구글닥스로 지원서를 받았는데, 질문은

1. 자기소개

2. 지원동기

3. 경험 및 수준

4. 만들고 싶은 웹 서비스

5. 협업 또는 팀플 경험

에 대해서 작성하는 것이었습니다. 각 질문마다 제한 분량이 있었는데, 몇 자 내외라고 하길래 그냥 하고 싶은 말이 많으면 분량을 넘겨서 썼습니다. 사실 연합학회의 회장을 하고 지원서를 여러 장 받아보니, 가장 좋은 지원서는 스펙이 대단한 지원서가 아니라 글에서 진실성과 열정이 보이는 지원서인 것 같았습니다. 추가로, 지원서를 보고 이 사람이 누굴지 궁금하게 하는 것도 좋은 방법인데 이렇게 궁금증을 유발하기 위해서는 평범하지 않은, '나의 이야기'를 하는 것이 중요하다고 생각합니다. 

 

문자로 결과가 도착했고, 감사하게도 1차 결과는 합격이었습니다!

아래 문자의 1차 합격 공지 노션 페이지에 들어가보니, 최종경쟁률은 약 15대 1이 될 예정이고, 1차 서류 선발은 6대 1의 경쟁률이라고 안내하고 있었습니다. 생각보다 경쟁률이 치열해서 놀라기도 했습니다. 

 

#면접평가

면접은 지원자1: 면접관3의 방식으로 줌 면접을 진행했습니다.

약 20-30분 가량 면접을 진행했고, 별다른 까다로운 질문은 없었던 것 같습니다. 역시 학생들이 진행하는 동아리다 보니, 지원자의 능력보다는 얼마나 성실히 이 동아리에 참여할 수 있는지를 확인하는 것 같았습니다. 기억에 남는 질문은 제가 협업과 팀플 경험에 리더로 참여한 여러 활동들을 작성했는데, 여기서 리더의 역할만 해왔기 때문에 팔로워의 역할이 주어지면 팀 내에 융화되지 힘들지 않냐는 질문이었습니다. 이 질문을 예상하지는 못했는데, 이전에 팀 활동을 하면서 내가 생각하는 이상적인 팔로워의 모습을 떠올리며 리더와 팔로워의 역할이 크게 다르지 않기 때문에 책임감을 가지고 팀 활동에 참여하는 태도가 더 중요하다고 답했습니다.

추가로는, 계절학기를 수강할 예정이었는데 계절학기와 동아리를 병행하면 어렵지 않겠냐고 질문을 주셔서 사실 계절학기보다 동아리를 훨씬 하고싶었기 때문에 그럼 계절학기를 철회하겠다고 대답했습니다. 그리고 실제로 계절학기를 철회했습니다ㅎ

 

이번에도 결과는 개별 문자로 통보가 왔고, 합격이었습니다. 높은 경쟁률을 뚫고 합격할 수 있어서 운이 좋았던 것 같습니다:)

 

#코딩테스트

이 코딩테스트의 존재를 사실 모르고 있었는데, 구글닥스의 페이지를 넘겨보니 갑자기 튀어나와서 좀 놀랐습니다. 문제의 원본을 업로드하면 문제가 생길 것 같아서, 간단하게만 설명하자면 다음과 같습니다. 

 

1. 전세계적으로 퍼져 있는 코로나를 치료할 치료제가 개발되었고, 각 나라들에게 백신을 투여하여 완치율을 높이는 게임을 만들어라.

2. 백신1, 백신2, 백신3이 각각 25%, 50%, 100%의 치료율을 가지고 있고, 한국, 미국, 일본, 독일, 중국의 5개 나라에 투여한다. 각 나라는 이미 일정 확진자 수를 보유하고 있다. (이 확진자 수도 공개되었고, 정확한 수치는 기억이 안납니다.)

3. 총 5라운드 동안 한 라운드별로 한 개의 백신을 한 개의 나라에 투여하고, 첫 번째 라운드를 제외하고는 어떤 백신이 어떤 나라에 투입될지는 랜덤으로 정한다. 

4. 해당 라운드에서 백신이 투여되는 나라를 제외하고는 확진자가 15%씩 증가한다. 

5. 만약 5라운드가 끝나기 전에 확진자가 나라의 총 인구수를 넘으면 게임을 종료한다. 

6. 게임이 종료되면 나라들의 총 확진자 수별로 1~5등까지 정렬하고 결과표를 보여준다. 

 

파이썬으로 class개념을 사용해서 작성하라고 했는데, 이전까지 파이썬의 class에 대해서 잘 몰라서 그냥 def 함수만 사용해서 문제를 풀었습니다. 차근차근 구현하다보니 많이 어려운 문제는 아니었는데, 처음 봤을 때 막막하긴 했습니다. 

아래는 제가 작성한 코드입니다. 

import random
vac1 = ['백신 1', '25']
vac2 = ['백신 2', '50']
vac3 = ['백신 3', '100']

korea = ['한국', '1500', '300']
china = ['중국', '3000', '800']
japan = ['일본', '2000', '500']
us = ['미국', '2500', '750']
germany = ['독일', '2200', '1000']

vaccine = [vac1, vac2, vac3]
country = [korea, china, japan, us, germany]

InfectSum = 0
CureSum = 0


def infect():
    print(' ')
    print('선택된 백신 : ' + vaccine[int(try1)-1][0] +
          ', 치료율 : ' + vaccine[int(try1)-1][1] + '%')
    print('선택된 국가 : ' + country[int(try2)-1][0]+', 인구수 : ' +
          country[int(try2)-1][1] + '명, 감염자수 : '+country[int(try2)-1][2]+'명')
    print('='*50)
    global CureSum
    CureSum += int((int(country[int(try2)-1][2]))
                   * (int(vaccine[int(try1)-1][1])/100))
    # 치료된 사람들 더해주기
    country[int(try2)-1][2] = str(int((int(country[int(try2)-1][2]))
                                      * (1-int(vaccine[int(try1)-1][1])/100)))
    # 이번 라운드에서 고른 나라에 고른 백신 적용
    for i in range(5):
        if country[i][2] == '0':
            print('완치된 국가 : '+country[i][0])


def situation():
    for i in range(5):
        if country[i][2] == '0':
            pass
        elif country[i][2] != '0':
            print('감염 국가 :' + country[i][0])
            print('인구수 :' + country[i][1]+'명')
            print('감염자수 : ' + country[i][2]+'명')
            print(' ')
            # 5개 나라 모두 보여주기


def decide():
    total = 0
    for i in range(5):
        total += int(country[i][2])

        if int(country[i][2]) > int(country[i][1]):
            print('감염자 수가 인구수보다 많아졌습니다.')
            print('게임을 중단합니다!')
            break

        elif country[i][2] == '0':
            country[i][2] = '0'
            # 만약 확진자 0명이면 넘어가기
        else:
            global InfectSum
            InfectSum += int(int(country[i][1])*0.15)
            # 라운드별 감염자 수 합
            country[i][2] = str(
                int(int(country[i][2])+int(int(country[i][1])*0.15)))
            # 확진자 0명이 아니면 인구수에서 0.15 더해줌
    if total == 0:
        print('모든 국가가 완치되었습니다!')
    # 모든 국가 완치되었을 때 메시지 출력


sum = 0


class Corona:
    def Show(self):
        print('-'*50)
        print(' '*18 + '코로나 종식 게임')
        print('-'*50)
        a = '1. 백신 정보'
        b = '2. 감염된 국가 정보'
        c = '3. 게임 시작'
        d = '4. 게임 종료'
        print(a, b, c, d, sep="\n")
        # 줄나누기
        print('-'*50)

    def VacInfo(self):
        for i in range(3):
            print('백신 이름 : '+vaccine[i][0])
            print('백신 치료율 : '+vaccine[i][1]+'%')
            print(' ')

    def CoInfo(self):
        for i in range(5):
            print('country : '+country[i][0])
            print('population : '+country[i][1]+'명')
            print('infected : '+country[i][2]+'명')
            print(' ')

    def Start(self):
        print(' '*20+'게임 시작!')
        print(' ')
        print('백신 번호(1~3)와 국가 번호(1~5)를 차례로 입력하세요')

    def Round1(self):
        print(' '*20 + '**1st Round**')
        infect()
        print(' '*5 + '1차 백신 투여 후 감염된 나라에 대한 정보')
        print('='*50)
        situation()
        decide()

    def Round2(self):
        print(' '*20 + '**2st Round**')
        infect()
        print(' '*5 + '2차 백신 투여 후 감염된 나라에 대한 정보')
        print('='*50)
        situation()
        decide()

    def Round3(self):
        print(' '*20 + '**3rd Round**')
        infect()
        print(' '*5 + '3차 백신 투여 후 감염된 나라에 대한 정보')
        print('='*50)
        situation()
        decide()

    def Round4(self):
        print(' '*20 + '**4th Round**')
        infect()
        print(' '*5 + '4차 백신 투여 후 감염된 나라에 대한 정보')
        print('='*50)
        situation()
        decide()

    def Round5(self):
        print(' '*20 + '**5th Round**')
        infect()
        print(' '*5 + '5차 백신 투여 후 감염된 나라에 대한 정보')
        print('='*50)
        situation()
        total = 0
        for i in range(5):
            total += int(country[i][2])

            if int(country[i][2]) > int(country[i][1]):
                print('감염자 수가 인구수보다 많아졌습니다.')
                print('게임을 중단합니다!')
                break

        if total == 0:
            print('모든 국가가 완치되었습니다!')
        # 모든 국가 완치되었을 때 메시지 출력

    def result(self):
        print('='*50)
        print(' '*20 + '최종 결과')
        print('='*50)
        print('라운드마다 추가로 감염된 감염자 수 : ' + str(InfectSum)+'명')
        print('백신으로 치료된 감염자 수 : ' + str(CureSum)+'명')
        print('백신으로 완치된 국가 : ', end=' ')
        c = 0
        for i in range(5):
            if country[i][2] == '0':
                c += 1
                print(country[i][0], end=' ')
        print(str(c) + '개 국가' + ' ')

        from operator import itemgetter
        fin = sorted(country, key=itemgetter(2), reverse=True)
        for i in range(5):
            print(' ')
            print(str(i+1)+'위')
            print('국가 : '+fin[i][0])
            print('인구수 : '+fin[i][1])
            print('감염자수 : '+fin[i][2])
            print(' ')
        print('게임 종료!')


a = Corona()

VacNum = [1, 2, 3]
NatNum = [1, 2, 3, 4, 5]


def num():
    random.shuffle(VacNum)
    random.shuffle(NatNum)


    # 섞는 함수
num()

print(a.Show())
# 처음페이지 보여주기

press = input()
if press == '1':
    print(a.VacInfo())
    # 페이지선택
elif press == '2':
    print(a.CoInfo())
elif press == '3':
    print(a.Start())
    try1, try2 = input().split()
    # 인풋 받아서 실행하기
    print(a.Round1())

    num()
    try1 = VacNum[0]
    try2 = NatNum[0]
    print(a.Round2())

    num()
    try1 = VacNum[0]
    try2 = NatNum[0]
    print(a.Round3())

    num()
    try1 = VacNum[0]
    try2 = NatNum[0]
    print(a.Round4())

    num()
    try1 = VacNum[0]
    try2 = NatNum[0]
    print(a.Round5())

    print(a.result())

elif press == '4':
    print('game over')

 

여기까지 피로그래밍 14기 지원과 면접과정 그리고 코딩테스트에 대한 내용이었습니다.

감사합니다:)

'환 codes web > Project' 카테고리의 다른 글

Vote47 | 나에게 맞는 서울시장 후보자 테스트  (2) 2021.04.01

관련글 더보기

댓글 영역