DAY38 : TIL [알고리즘 기간 시작]

안휘원·2021년 10월 20일
1

spartacodingclub

목록 보기
23/39

👩‍👩‍👧‍👦 새로운 팀 (211020~211026)

▶ 첫 미팅

  • 나는 우당탕탕 조가 조용한 편이라고 생각했는데, 더 조용한 사람들이 있었다. 그렇다 바로 오늘 배정된 4조다. 그래도 다들 조용조용히 협조적(?)인 편인 것 같아 다행이다.

  • 본래 팀장인 사람들은 최대한 제외하고 팀장을 뽑아야 했는데, 전공자 2명이 팀장이었다 (그런데 두 분 다 엄청 조용하셔서 1초 신기했음).
    그리고 비전공자인 나와 다른 한 분이 남았는데, 내 순발력이 떨어져서 선수를 맞았다.
    그렇게 팀장이 됐다. 순발........력을 키우자.
    원래 조의 우리 에인졀 팀장님 처음에 조용했던 우리 팀원들 보고 조금 힘드셨겠다는 생각이 조금 들었다 😂

  • 팀 규칙은 아침 점심 저녁으로 가벼운 회의를 하는 것으로 정했다.
    아침은 그 날의 계획, 점심은 중간점검 및 현황 공유, 저녁은 데일리 미션 풀이에 대해 나눌 예정이다.



1주차 알고리즘 숙제

▶ 문자열 뒤집기


- 문제:


- 내 풀이:

문자열 치환 함수를 검색해서 나온 .replace("old","new") 사용해봤다. 그런데 사실 쓰면서도 틀린 걸 알았다. replace()는 " " 내에 있는 단어 자체를 바꿔주는 것 같던데, " " 안에 나눠지지 않고 같이 있는 0과 1을 구분해서 변환시켜 줄 수는 없을 테니까... 하지만 방법을 모르는 걸 ㅠ

저 (string)은 어디서 넣어야 하지...? 싶어서 그나마 좀 눈에 익었던 for i in string: 뭐시기 저시기를 다짜고짜 넣었는데ㅋㅋㅋ 영 모르겠어서 그냥 빼버렸다.

고민하다가 내 방법을 시도해보고 답안을 보라고 하던데 그것도 뭘 알아야 시도를 할 수 있을 듯ㅎㅎ 시간 버리지 말고 조금만 고민하다가 그냥 미련 없이 답안 보고, 차라리 복습을 하는 게 맞는 것 같다.


- 정답: 응 replace 전혀 없고요

input = "011110"


def find_count_to_turn_out_to_all_zero_or_all_one(string):
    count_to_all_zero = 0
    count_to_all_one = 0

    if string[0] == '0':
        count_to_all_one += 1
    elif string[0] == '1':
        count_to_all_zero += 1

    for i in range(len(string) - 1):
        if string[i] != string[i + 1]:
            if string[i + 1] == '0':
                count_to_all_one += 1
            if string[i + 1] == '1':
                count_to_all_zero += 1

    return min(count_to_all_one, count_to_all_zero)


result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)

- 오답노트:

너무 어렵다 엉엉ㅠㅠ 사실 이건 해설 강의를 두 세번을 들어도 이해가 어렵고, 혼자서 코딩을 못 하겠다... 넌 나중에 다시 와서 꼭 씹어삼킬 거다..



▶ 소수 나열하기


- 문제:


- 내 풀이:

엥? 뭐가 적힌 거지? 라고 생각했다면, 맞다. 아무것도 적지 못했다.

첫 문제에서 배운 경험으로, 이번 문제는 고민할 엄두도 못내고 머리가 새하얘서 풀이 영상을 먼저 봤다.

지금 생각해도 현명했다, 음.


- 정답:

input = 20


def find_prime_list_under_number(number):
    prime_list = []

    for n in range(2, number + 1):
        for i in prime_list:
            if n % i == 0 and i * i <= n:
                break
        else:
            prime_list.append(n)

    return prime_list


result = find_prime_list_under_number(input)
print(result)


- 오답노트:

나름 내 딴에 검색하고 분석해본 것들... 틀린 부분이 있을 수도 있다.
내가 자주 틀리고 헷갈리는 건 각 값들에 이름을 붙이는 거다.
어느 부분에서, 어떤 값에 이름을 붙여야 하는지...

예를 들면 prime_list = []를 소수값들을 포함하는 역할로, for문 보다 전의 위치에 지정을 해야한다는 거나...

아무래도 문법을 아예 모르는 상황이라 애초에 이해를 잘 못하는 건 아닌가 싶다.

∴ 공부하자



FEEDBACK 📑

len() : 문자열의 문자 개수를 반환하는 내장함수
.isalpha: 문자열의 구성이 알파벳인지 확인하는 내장함수.
index: 배열에서 값의 위치를 찾아주는 함수.
set(): 중복된 문자값을 제거
char: character(문자)의 약자
break: 반복문(for, while, if 등)을 빠져나올 때 사용
range(\start , \stop, \step) : 연속된 숫자(정수)를 만들어주는 함수


▼ TODAY'S MEMO:

  • 알고리즘 부분은 나중에 복습하는 걸 목표로, 하나하나 이해할 때까지 뜯는 대신에 술술 듣고 넘어가고 Java 문법 강의 듣고난 다음 (혹은 좀 더 공부 진도가 진행된 다음) 다시 복습을 해보는 게 좋을 것 같다.

  • 최근 너무 늘어지고 풀어지는 것 같아서, 수험기간 때나 열심히 하던 DAILY CHECK-LIST를 다시 시작했다. (저번주 거는 짤려서)
    다른 애들이 발랄한 연보라로 색칠되는 동안, 나의 빅 드림 0시 전 취침은 혼자 흑백영화 찍고 있다. 유감.


+ 그리고 오늘도... ༼;´༎ຶ ۝༎ຶ`༽

profile
우당탕탕 개발자 성장일지

0개의 댓글