본문 바로가기

TIL

[TIL 2024. 03. 05]

오늘 한 일

  • 오늘의 코드카타 10문제 + 팀원들과 코드 리뷰
  • => 노션 아카이빙, 구글폼, 일일커밋
  • 알고리즘 세션
  • 세션 관련 알고리즘 문제_모의고사, 숫자야구(진행중)
  • TIL 작성

 

오늘의 리뷰

1. #모의고사(프로그래머스)

def solution(answers):
    answer = []
    val = [0,0,0]

    person1 = [1,2,3,4,5]
    person2 = [2,1,2,3,2,4,2,5]
    person3 = [3,3,1,1,2,2,4,4,5,5]

    for i in range(len(answers)):
        if person1[i%len(person1)] == answers[i]:   #나머지 이용
            val[0] += 1

        if person2[i%len(person2)] == answers[i]: #elif가 아니라 if(중복허용이니까)
            val[1] += 1

        if person3[i%len(person3)] == answers[i]: #elif가 아니라 if(중복허용이니까)
            val[2] += 1


    for j in range(len(val)):
       if val[j] == max(val):
           answer.append(j+1)
    # 인덱스에 접근해야 하므로, for i in val: 아님
    # 인덱스가 0부터 시작하므로, 1부터 시작하는 실제번호 맞춰주기
    return answer

# 출력 [3]
a = solution((3,1,2,4,2,5,4,3,5,2))
print(a)

 

2. 기억할 점

(1) iterable한 자료형: 리스트, 튜플, 문자열, 딕셔너리, 배열(array), 세트

(2) for i in range(len(val)) vs for i in val

  • 참고로 val = []임. 즉, val이라는 변수는 iterable(=반복 가능)함.
  • 전자: i가 val의 인덱스임. 따라서 인덱스에 직접 접근이 가능하고, i와 val[i]를 활용 가능함
  • 후자: i가 val의 값 자체임. 값 자체를 가져와서 활용하고 싶을 때 사용가능.

 

 

(3) range(len())과 enumerate()

  • 연산 속도 자체는 큰 차이가 없음
  • 하지만 좀 더 파이썬적인 활용은 enumerate()임.
  • 왜냐하면 enumerate는 인덱스와 값에 쉽게 접근 가능하고, 가독성이 더 좋음.
  • for i in range(len(iteable한 대상))
  • for i, v in enumerate(iterable한 대상, 선택사항(ex. start=1) : i와 v에 각각 index와 value가 할당됨
  • for val in enumerate(iteable한 대상, 선택사항) : 인덱스와 벨류값이 각 튜플에 들어있음.

'TIL' 카테고리의 다른 글

[TIL 2024. 03. 07]  (0) 2024.03.07
[TIL 2024. 03. 06]  (0) 2024.03.07
[TIL 2024. 03. 04]  (0) 2024.03.04
[TIL 2024. 02. 29]  (0) 2024.02.29
[TIL 2024. 02. 28]  (0) 2024.02.28