오늘 한 일
- 오늘의 코드카타 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 |