본문 바로가기
부트캠프(LIKELION AIS7)/TIL

221004 TIL 기초탄탄 스터디 프로그래머스 문제, 미니프로젝트에 배운 것 적용해보기

by aimaimee 2023. 4. 14.

프로그래머스 문제 : 평균 구하기, 자릿수더하기, 자연수 뒤집어 배열로 만들기 / 오늘 하루의 TIL / 유독 힘든 날이지만 흘러가게 버티자 /

프로그래머스

1. 평균구하기

  • 첫 번째 방법 : SUM / len 으로 간단하게
def solution(arr):
    return sum(arr) / len(arr)
  • SUM()을 안쓴다면?
def solution(arr):
    for i in arr
        answer = answer+i
        # answer += i
    return answer / len(arr)

2. 자릿수더하기

def solution(n):
    answer = 0
    temp_list = list(str(n))
    for i in temp_list:
        answer = answer + int(i)
    return answer 

위에꺼 줄이면,

def solution(n):
    answer = 0
    for i in list(str(n)):
        answer = answer + int(i)
    return answer 

n=123일 때, list(str(n))하면 ["1", "2", "3"] 형태로 출력된다. answer는 0부터 시작이니까,
answer = 0+int("1") = 1
answer = 1+int("2") = 3
answer = 3+int("3") = 6

  • 리스트 컴프리헨션으로 줄일 수가 있다.
    [answer += int(i) for i in str_n]
  • map 함수를 사용했을 때
def solution(n) :
    answer = 0
    n = list(map(int, str(n)))
    for i in range(len(n)):
        answer += n[i]
    return answer

3. 자연수 뒤집어 배열로 만들기

def solution(n):
    list_n = []

    for i in str(n):
        list_n.append(int(i))
    answer = list_n[::-1]
    return answer

n=12345일 때, str(n) = "12345"
temp_list에 list(str(n))을 넣으면 ["1", "2", "3", "4", "5"]
print(temp_list[0:0:1]) 하면 처음부터 끝까지 리스트가 나오게 됨.
print(temp_list[0:0:-1]) 리스트를 뒤집게 됨.

해결 과제

  • 리스트 컴프리헨션 공부하기 : 0205번 파일에서도
    for a_tag in a_list:
    a_link_no.append(a_tag["href"].split("/")[-1])을
    table["내용번호"] = [a_tag["href"].split("/")[-1] for a_tag in a_list 라고 바꾼 적이 있다.
  • map 함수 공부하기
  • reverse 함수와 .sort(reverse=True)의 차이 : reverse는 리스트를 뒤집어주지만, .sort(reverse=True) 하면 뒤집어서 정렬을 해준다. 예를 들어, ['15', '13', '1', '4' ,'10']이 있다면, reverse는 ['10', '4', '1', '13', '15'] 이렇게 뒤집지만, .sort(reverse=True) 하면 [15, 13, 10, 3, 1] 순으로 정렬된다.
    내가 이해한게 맞나?

미니프로젝트

유튜브 따라하느라 find 함수를 사용했는데, select를 사용해서 리스트 가져오기를 해보았다. copy selector 를 익히니 select로 가져오기가 엄청 편하다.
a 태그의 href에는 링크가 담겨 있고, img 태그가 있다면 img alt에 기사 제목이 한 번 / 다시 a 태그의 href 링크내용과 기사 제목이 출력된다.
그래서 if 문을 사용해서 img 태그가 있다면, 첫 번째 태그에서 가져오고, 아니라면 두 번째 태그에서 가져오도록 설정하는건가?

조금 헷갈린다.


팀원들과 이야기 할 때, 한 페이지가 두 파트로 나뉘고, 페이지를 반복문으로 가져오려면 첫번째 페이지의 기사 링크들에서 가져온다고 했는데, 0205번 파일에서 href에서 번호만 가져온 것 처럼 링크를 가져올 필요가 있나보다. 조금 더 공부해보자.

221004 TIL

  1. 사실(Fact) : 서울 102 질문 페이지의 데이터를 내용까지 수집해오는 것을 배웠다.
  2. 느낌(Feeling)
  • 1주차 때 처럼, 다시 한번 이해가 하나도 되지 않아도 버텨야 하는 시기인가보다.
  • 수도 코드 생각해보라고 하셨을 때, 나는 너무 간략하게 짰구나.(근데 거기까지 밖에 이해 못해서 그렇게 된거)
  1. 교훈(Finding)
  • BeautifulSoup은 파싱 도구라는거 기억하기
  • 벨로그 다른 분들 정리 : 나도 미니프로젝트 해나가면서 고민했던 과정과 어떻게 해결했는지 적어보자
  • 프로젝트를 어떤 식으로 진행할 건지 짜보는게 중요하구나!!!!!!!다음 팀 프로젝트 때는, 수도 코드랑 코드 리뷰 잘 해보자
  1. 오늘 하루
  • 결실이 없을 때
    스탬프 신경을 안 쓰고 싶은데, 신경이 쓰인다. 그게 뭐라고. 이런거에 초월하는 성격이고 싶다. 매 순간 열심히 임하고 있다고 생각하는데, 스탬프도, TIL 키워드도 부족함이 많나 보다. 오늘은 유독 모든 부분에서 하는 만큼의 결실이 안나오니까 조금 의욕이 떨어진다.
    잘 버텨보자....
  • negative 그만
    그리고 데일리 설문이나 미니프로젝트 후기, TIL 등에서 너무 나의 힘들었던 점만 나열하지 않았나 되돌아보게 된다. 나의 힘듦은 나만의 힘듦일 뿐인데 너무 부정적 느낌만 제공한 것 같다. 앞으로는 그런 부분은 줄이고 그 힘듦이 있었지만 어떻게 극복했는지에 집중해서 글을 쓰자.
  • 함수 input과 output
    함수, 반복문은 여전히 어렵다. 그런데 으쌰 팀에서 나눴을 때, 함수 변수 설정은 input과 output만 어떤 것으로 넣을지 고민해보면 쉬워질거라고 팀원이 나눠줘서, 그 부분에 대해서 고민해보자고 생각하게 되었다.

셀프 숙제

  1. 미니프로젝트 오늘 배운거 적용해서 코드 다시 짜보기
  2. raise_for_status랑 status_code랑 차이
  3. 프로그래머스 코딩테스트 입문 단계 풀어보기

댓글