1주차 시간표
1주차에서는 크게 미니프로젝트 준비 및 발표, 내일배움캠퍼의 밤(레크리에이션), 파이썬 원격 강의, 알고리즘 실습 등이 있었다.
미니프로젝트 진행
각 팀별로 자신들의 팀과 팀원들을 소개하는 소개페이지를 제작하는 것이 프로젝트의 내용이었다.
캠프 개강 전 금요일날 팀원들이 미리모여 팀명과 제작할 소개 페이지의 S.A.를 미리 제작해 두었고 월요일은 이 때 만들어놓은 와이어 프레임에 따라 역할을 배분하여 메인 페이지 제작에 들어갔다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Poor+Story&display=swap" rel="stylesheet">
<title></title>
</head>
<div class="frame">
<h1>Team_licoder</h1>
<h2>리코더(licoder)</h2>
<div class="top">
<img id="licoder_pic" src="https://w7.pngwing.com/pngs/99/795/png-transparent-recorder-western-concert-flute-musical-instrument-wind-instrument-silver-seven-hole-clarinet-piano-violin-musical-notation.png">
<p>
리코더는 문학의 영단어 literature와 코딩하는 사람을 뜻하는 단어인<br> Coder를 합성해 문학과
코딩을 좋아하는 사람들의 모임이라는 뜻입니다.
</p>
</div>
<h2>Team_licoder만의 특징과 추구하는 궁극적인 목표</h2>
<div class="goal">
<img id="book_pic" src="https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxOTA4MzBfMjg0%2FMDAxNTY3MTUxOTIzMjQ0.ReNOrKAU2OKshm0YRqgeuNt8qMqkrRXbLuUJ_O-aeHYg.QG5HM-rbYrpnfPgAZ_5aVw5yT-ymMY1olkwk44ANjjgg.JPEG.chuchuchu211%2Ftumblr_a628b290f1cd471c935bffd5bc010d1f_e7adf705_640.jpg&type=sc960_832">
<p>
4명 모두 독서를 좋아하고 MBTI가 I인 내향적인 성격이지만, 코딩에 대해서는 누구보다 열정적인 팀입니다.<br>
Team_licoder는 캠프에서 배우는 내용뿐 아니라 자기주도 학습을 통해 개인적인 코딩 능력또한 키우고, <br>
궁극적으로는 팀원 모두가 캠프 수료 후 그 지식과 경험들을 바탕으로 원하는 기업에 취업 하는 것을 목표로 하고 있습니다.
</p>
</div>
<h2>Team_licoder의 약속</h2>
<div class = "promise">
<ol>
<li>시간 약속을 잘 지킨다.</li>
<li>상시 연락이 가능하도록 연락체계를 유지한다.</li>
<li>하루 정해진 공부 할당량을 충족할 수 있도록 노력한다.</li>
<li>서로 배려하고 소통을 중시한다.</li>
<li>프로젝트를 성공적으로 끝낼 수 있도록 최선을 다 한다.</li>
</ol>
</div>
<h2>Team_licoder의 팀원들(사진을 누르면 멤버소개페이지로 이동합니다.)</h2>
<div class="cards">
<div class="card-body">
<img class="card-img" src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjskhd%2FbtrKHc237dN%2FF3TWqFn3eEAJKi7HAxZ22k%2Fimg.jpg" alt="images">
<div class="card-text">
<h2>정형빈</h2>
<p><a href="https://velog.io/@gudqls369" target="_blank">https://velog.io/@gudqls369</a></p>
</div>
</div>
<div class="card-body">
<img class="card-img" src="https://velog.velcdn.com/images/dani_ca/profile/bd2a6bca-f79f-4af0-9a43-0f787a9d7ad6/image.jpg" alt="images">
<div class="card-text">
<h2>하경수</h2>
<p><a href="https://velog.io/@dani_ca" target="_blank">https://velog.io/@dani_ca</a></p>
</div>
</div>
<div class="card-body">
<img class="card-img" src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLIrJK%2FbtrKTNVRbWQ%2F5a6bAdIUMqivJH3JJmyiuK%2Fimg.jpg" alt="images">
<div class="card-text">
<h2>염보미</h2>
<p><a href="https://lemontiger.tistory.com" target="_blank">https://lemontiger.tistory.com</a></p>
</div>
</div>
<div class="card-body">
<img class="card-img" src="https://velog.velcdn.com/images/hjlee719/post/53a67f2b-7ecc-430f-8804-d239a8e8621a/image.jpg" alt="images">
<div class="card-text">
<h2>이효정</h2>
<p><a href="https://velog.io/@hjlee719" target="_blank">https://velog.io/@hjlee719</a></p>
</div>
</div>
</div>
<body>
</body>
</html>
VS Code 내의 Live Share라는 프로그램을 활용해 내가 서버를 열고 그 안에서 팀원들이 모두 실시간으로 작업을 해서 모르는 부분이 있으면 질문도 하고 피드백도 하면서 페이지를 완성시켰다.
첨부된 이미지는 완성된 팀 소개 메인페이지의 모습이다.
팀 리코더 소개 페이지 결과물 설명
팀 리코더 소개 페이지 시연 영상
위의 두 링크는 우리 팀의 메인 소개페이지의 결과물을 설명한 노션과 해당 페이지의 시연을 보여준 시연연상이다.
수요일 14시부터는 발표시간이었고 발표를 준비하는 과정에서 준비가 미흡했던 것이 드러나 뒤늦게 급급하게 대본수정도 하고 추가할 내용들도 몇가지 넣어서 발표를 겨우 진행하였는데 다행히 별탈 없이 발표를 끝낼 수 있었다. 우리 팀 발표에 대한 튜터님의 피드백은 본인들의 실력에 대한 객관화를 좀 더 확실히 해서 할 수 있는 것들을 추려내보라고 하셨다. 해당 피드백을 듣고 미니프로젝트에 대한 회고를 실시하였고 해당 내용은 다음 링크에서 확인할 수 있다.
내일배움캠퍼의 밤(레크리에이션)
수요일 밤은 내일배움캠퍼의 밤이라고 레크리에이션 시간이었다. 캠프에서 편의점 기프티콘을 지원받아 간식거리를 사고 복장도 갖춰입고 모여서 OX퀴즈, 레이싱 등 게임도 하면서 즐거운 시간을 보냈다.
파이썬 원격 강의
이범규 튜터님의 파이썬 문법 기초 KDT 실무형AI웹개발자 3회차를 이틀에 나누어 수강하고 그 내용을 팀원들과 공유하여 어려운 부분은 서로 얘기하고 핵심내용을 정리해보기도 했다.
리코더 팀의 스터디 계획표
09:00~13:00 강의시청
13:00~14:00 점심시간
14:00~15:00 개인별 강의내용 정리시간(어려웠던 부분 정리, 핵심내용요약 등)
15:00~Any 정리한내용 팀원들과 공유
~18:00 팀원들과 공유한 내용을 토대로 보충학습
18:00~19:00 저녁시간
19:00~21:00 알고리즘 실습
목 : 1-10강 까지 / 금 : 1-19강 까지
주말은 복습
해당 시간표에 맞춰서 스터디를 진행하였고
ex)
print(len("abcde")) # 5
print(len("Hello, Sparta!")) # 14
print(len("안녕하세요.")) # 6
ex)
a = [1, 5, 2]
print(len(a)) # 3
b = [1, 3, [2, 0], 1]
print(len(b)) # 4
ex)
a = [1, 2, [2, 3], 0]
print(a[2]) # [2, 3]
print(a[2][0]) # 2
ex)
person = {"name":"Bob", "age": 21}
print(person["name"])
ex)
person = {"name":"Bob", "age": 21}
person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}
person["height"] = 174.8
print(person) # {'name': 'Robert', 'age': 21, 'height': 174.8}
ex)
person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"]) # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"]) # 92
ex)
age = 27
if age < 20:
print("청소년입니다.")
elif age < 65:
print("성인입니다.")
else:
print("무료로 이용하세요!")
for문
fruits = ['사과', '배', '감', '귤']
for fruit in fruits:
print(fruit) # 사과,배,감,귤
함수선언 : def 함수명(매개변수):
<수행할 문장1>
<수행할 문장2>
def check_gender(pin):
num = int(pin.split('-')[1][0])
if num % 2 == 0:
print('여성')
else:
print('남성')
my_pin = "200101-3012345"
check_gender(my_pin)
결과값 : 남성
ex)
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
ex)
a_list = [1, 3, 2, 5, 1, 2]
b_list = []
for a in a_list:
b_list.append(a*2)
print(b_list)
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
print(b_list)
ex)
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people)
print(list(result))
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
ex)
filter :
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
ex)
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self):
if self.alive:
print('살아있다')
else:
print('죽었다')
m = Monster()
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()
다음과 같이 내용을 정리하였다.
알고리즘 실습
백준의 알고리즘 실습 단계별로 문제 풀어보기를 진행하였는데 첫날은 너무 어려웠었다. 파이썬 강좌를 이틀에 걸쳐서 나누어 들었기 때문에 아직 듣지 못한 강의의 내용이 문제로 나오기도 했기 때문에 문제에 접근 자체를 어떻게 해야하나 감이 잡히지 않아서 많이 헤메었다. 결국 첫날은 문제의 절반이상을 구글링을 통해 확인해서 풀게 되었다. 다행히도 2일차에는 스스로 문제풀이에 사용해야 할 함수들을 찾아내서 직접 문제를 풀 수 있었다.
아래부터는 풀면서 어려움을 겪었던 문제를 몇문제 간추려보았다.
Q. 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
A.
a = [1, 1, 2, 2, 2, 8]
b = list(map(int, input().split()))
for i in range(6) :
print(a[i]-b[i], end= ' ')
a는 체스말 피스의 총 갯수이기 때문에 [1, 1, 2, 2, 2, 8]로 값이 고정되어 있고 b는 동혁이가 발견한 흰색 피스의 갯수 일 때 a의 피스 갯수 중 동혁이가 발견한 흰색피스의 갯수를 뺀다면 올바른 세트가 되는데 필요한 피스의 갯수를 계산 할 수 있기 때문에 a[i]-b[i]로 값을 구했고, 마지막에 줄바꿈 없이 값을 나란히 출력하기 위해서 end = ' '의 값을 주었다.
문제
아래 예제와 같이 새싹을 출력하시오.
입력
입력은 없다.
출력
새싹을 출력한다.
A.
print(" ,r'\"7")
print("r`-_ ,' ,/")
print(" \\. \". L_r'")
print(" `~\\/")
print(" |")
print(" |")
# \를 그대로 출력하기 위해선 \\와 같이 두 번 작성해야 한다.
또한 " " , 혹은 ' ' 안에 똑같은 것을 출력하기 위해서는 \" 혹은 \' 꼴로 출력해야 한다.
따라서 출력하고 싶은 값에 해당 문자들이 포함되었을 때 그 점에 유의하여 코드를 작성했다.
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
A.
y = int(input())
if(y>=1 and y <= 4000) :
if(y %4 ==0)and(y%100!=0): #윤년일 때의 조건 1 y가 4의 배수이면서 100의 배수가 아닐 때
print(1)
elif y%400 ==0: #윤년일 때의 조건 2 y가 400의 배수일 때
print(1)
else: #위의 두 가지 경우에 해당하지 않을 때
print(0)
문제
KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.
또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다.
훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.
입력
첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
출력
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
A.
A, B = map(int, input('').split())
C = int(input())
if B+C < 60: #현재시간에서 입력시간을 더했을 때 분 단위가 60분을 넘지 않을 때
print(A, B+C)
elif A+(B+C)//60 < 24 and B+C >= 60: #현재시간에서 입력 시간을 더했을 때 분 단위가 60분을 넘지 않고
print(A+(B+C)//60,(B+C)%60) 시간이 24시를 넘지 않을 때
elif A+(B+C)//60 >= 24: #현재시간에서 입력 시간을 더했을 때 분 단위가 60분을 넘지 않고
print((A+(B+C)//60)-24,(B+C)%60) 시간이 24시를 넘어 0시부터 다시 표기해야 할 때
문제
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
입력
첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 게임의 상금을 출력 한다.
A.
A, B, C = map(int, input().split())
if A==B==C: #A,B,C의 값이 모두 같을 때의 상금
print(10000 + A * 1000)
elif A==B:
print(1000 + A * 100)
elif A==C: #A,B,C의 값 중 두개만 같을 때의 상금
print(1000 + A * 100)
elif B==C:
print(1000 + B * 100)
elif A!=B and A!=C and B!=C: #A,B,C의 값이 서로 다를 때의 상금
M = max(A,B,C)
print(M*100)
이번 주를 마치며
길다면 길고 짧다면 짧은 내일배움캠프의 1주차가 지나갔다. 첫 주차라서 일정을 고단하게 주시지는 않으신 것 같지만 그래도 마음 놓고 편하게 보낼 수 만은 없는 한 주 였다. 이번 한 주를 보내면서 가장 인상에 남았던 것은 아무래도 미니프로젝트였다. 초반부에는 원만하게 진행되는 줄 알았으나 막판에 발표 직전이 되어서야 나는 아직 경험이나 실력이 부족한 것이 많다는 생각을 하게 된 프로젝트였고 부족한 만큼 남들보다 더 노력해야 한다는 것을 깨달았다. 우선은 내가 지금 어느정도 수준까지 할 수 있는가에 대한 객관화가 필요할 것이고 거기에서 난이도가 올라갔을 때 팀원들이나 튜터님 혹은 구글링의 도움을 받았을 때 해낼 수 있는가? 그리고 해낸다면 시간이 얼마나 걸릴 것인가? 등 스스로 알아봐야 할 것들이 산더미 처럼 남았고 이것들은 다음주부터 실시될 실시간 파이썬 강의를 듣고 따라해 본다면 점차 알 수 있을 것이라고 생각한다. 우선은 스스로가 조금 위축된 것 같으니 아직 초보인 것을 감안했을 때 잘 하고 있다는 생각을 갖고 다음 주 부터 더 열심히 참여하려는 노력을 해보도록 하겠다.
이야 이렇게나 알찬 WIL은 정말 처음봐요!! 완벽 ㅎㅎ 형빈님 팀장으로 더 고생하셨을텐데 잘 해내줘서 너무 고맙고, 고생 많았습니다!!! 앞으로도 이렇게만 달려보아요. 화이팅!