A Developing Developer
DAY 8. K 튜터님 자료구조_알고리즘 강의(1/3), 개구간, 폐구간, 알고보면 알기쉬운 알고리즘 - 2 본문
DAY 8. K 튜터님 자료구조_알고리즘 강의(1/3), 개구간, 폐구간, 알고보면 알기쉬운 알고리즘 - 2
H-JJOO 2022. 11. 23. 22:21내배캠4기 Node.js
알고리즘 두렵다...
나랑 같은 느낌을 가진 학생들도 많겠지만(?) 상대적으로 잘하는 학생들 보면 조바심이 드는것도 현실이다...
나름 개발을 오래했는데 라는 위축되는 생각도 들고ㅠㅠ
그래도 '어쩌라고' 마인드로 밀어 붙이겠다. 배수의진이다.
(뒤는 지옥이야)
============================================================================================
- 자료구조_알고리즘 강의 TIME
K 튜터님의 자료구조_알고리즘 강의 첫번째 시간...
쉽지 않을거라 생각했지만 역시나 쉽지 않았다. 비교적 쉬운 첫번째 시간인데도 말이다...
손코딩을하는데 진짜 간단한 퀴즈도 써내려가는게 쉽지 않았다.
1. 최대값 찾기
# 1. 최대값 찾기
input = [3, 5, 6, 1, 2, 4, 10, 22, 1, 3, 44]
def find_max_num(array):
# max_num = 0 이라고하나 배열의 첫번째 값을 넣든 결과는 같다. 취향차이
max_num = array[0]
for num in array:
if max_num < num:
max_num = num
return max_num
print("현재 풀이 값 = ", find_max_num(input))
# max_num = 0 변수를 할당하고 input 받을 array 의 배열의 인덱스만큼 반복문을 돌려서 max_num 보다 큰 숫자가 나오면 그 숫자를 max_num 에 대입한다.
2. 컴퓨터가 고른 1 ~ 100 숫자 맞추기
# 2. 1~100 텀퓨터가 고른 숫자 맞추기
# import 외부의 페이지를 참조하기위한 키워드
import random
answer = random.randint(1, 100)
count = 0 # 몇번만에 성공했는지 알려주기 위한 변수
print('1~100 중 랜덤 숫자 하나를 정하였습니다. 과연 당신이 맞출 수 있을까요?!')
list array
while True: # 무한 루프
count += 1
guess = int(input('숫자 입력: ')) # 입력 받은 값을 숫자 값으로 치환
if guess > answer: # 사용자가 입력한 값보다 랜덤 숫자가 작으면 DOWN 출력!
print('DOWN')
elif guess < answer: # 사용자가 입력한 값보다 랜덤 숫자가 크면 UP 출력!
print('UP')
elif guess == answer: # 사용자가 입력한 값과 랜덤 숫자가 같으면 CORRECT 출력 후 종료
print('CORRECT')
break
while True:
print('숫자 입력한 횟수: %d번' % count)
# 1~100 중 선택하는 값이 select_num 일경우
# 1.while문 사용해서 입력값과 select_num 을 비교해서 비교값의 결과에따라 up down 을 출력해주고
# 2. select_num 과 입력값이 같으면 그 값을 출력하고 break
3. 연속된 문자열 요약하기
3. (연속된)문자열 요약하기
def summarize_string(target_string):
n = len(target_string) # 순차적으로 탐색하기 위한 변수
count = 0
result_str = ''
# 0 ~ n-2까지 루프를 돌아요, 마지막 비교할 게 없기때문에
for i in range(n - 1):
# i번째 문자와 i + 1번째 문자가 같으면 count를 늘려야겠죠?!
if target_string[i] == target_string[i + 1]:
count += 1
else:
# i번째 문자와 i + 1번째 문자가 같지 않으면 카운트를 멈춰요!
# 그리고, 현재 문자랑 카운트를 혼합해서 요약표현을 만들어요!
# count 초기화는 잊지마세요!
result_str += target_string[i] + str(count + 1) + '/'
count = 0
# 위에서 n-1 까지 루프를 안 돌았던 이유는 n-1이 마지막 문자이기 때문에 결산을 하기 위함이에요!
result_str += target_string[n - 1] + str(count + 1)
return result_str
input_str = "acccdeeeeffggzzzz"
print(summarize_string(input_str))
코드 하나하나가 이해가 안되는건 아니지만, 문제만 보고 이러한 결과를 써내려 가야하는게 부담인건 사실이다.
그래도 K 튜터님의 상세한 설명과 상세한 주석덕분에 공부하는데는 큰 도움이 되는거 같다.
내일은 시간 복잡도... 들어가는데 미리 예습한 입장에서 더 무서운건 착각이라고 해줘라.
- 알아볼 거리 TIME~
강의가 끝날 쯤인지 언젠진 기억안나지만 오늘도 K 튜터님께서 알아볼 거리를 던저 주셨다.
개구간과 폐구간에 대해서 알아보라하셨는데, 구글링 결과 생각보다 최신 자료가 없어서 당황했지만, 유트브 영상 자료와 구글링한 블로그 자료를 종합해서 개념을 정리해 보았다.
https://icepri3535.tistory.com/66
쉽게 설명하면 개구간은 (a,b) 로 표시하고 (a<b)를 의미하며 폐구간은 [a,b] 로 표시하고 (a<=b)를 의미하는데 개구간은 경계를 딱 닫아 둘수 없는 구간이고, 폐구간은 경계를 딱 닫아 둘 수 있는 구간이라고 할 수 있다.
- 알알알 2주차 TIME
https://icepri3535.tistory.com/67
어렵다... 뭘 더 어떻게 정리해야할지 모르겠는거 보니까 아직 완벽하게 모르는거 같다.
이번 주말도 복습의 구렁텅이에 빠져야 겠다...
============================================================================================
현재시간 오후 10시 20분을 넘어가고있다.
한계를 느끼는 약하디 약한 놈
20000
'내일배움캠프 4기 > TIL' 카테고리의 다른 글
DAY 10. K 튜터님 자료구조_알고리즘 강의 (3/3), cs 특강(HTTP (0) | 2022.11.25 |
---|---|
DAY 9. K 튜터님 자료구조_알고리즘 강의(2/3), 알고보면 알기쉬운 알고리즘 - 3 (0) | 2022.11.24 |
DAY 7. 알고보면 알기쉬운 알고리즘 - 1주차 (0) | 2022.11.22 |
DAY 6. 파이썬,자바스크립트 문법 뽀개기 (0) | 2022.11.21 |
DAY 5. TaeCho.vil 팀 프로젝트 발표 준비 및 발표, CS 특강 (0) | 2022.11.18 |