내일배움캠프 16일차
[오늘 한일]
- 알고리즘 문제풀이
- 깃 특강 수강
- 장고 개인 과제
[오늘 배운점]
<문자 연산>
문제풀이 '대문자 소문자'를 풀면서 알게 된 문자 연산들이다.
- str.isupper() 스트링에 대문자가 있는지 참거짓 판단
- str.islower() 스트링에 소문자가 있는지 참거짓 판단
- str.upper() 스트링에 있는 대문자를 소문자로 바꿈. 반환 값은 대입이 필요하다.
- str.lower() 스트링에 있는 대문자를 소문자로 바꿈. 반환 값은 대입이 필요하다.
- str.swapcase() 대문자를 소문자로, 소문자는 대문자로 바꾼다. 반환 값은 대입이 필요하다.
<문자 열을 한글자씩 담는 리스트>
어제 문자열 반복에 대해 많이 알게 되었는데,
오늘 그 꼭지점을 알게 된것 같다.
문제풀이 중 팀원분이 알려주신 방법이다.
list(문자열). 이렇게 list함수를 쓰면 한글자씩 나눠 담는 리스트를 만들어준다.
이렇게 되면 한글자씩 잡아 가공하는 건 어려워지지만.
리스트로 만든 후, 인덱스를 이용하거나,
리스트 연산이나 리스트 컴프리헨션으로 더 빠르게 해법을 찾을 수도 있을 것 같다.
결론, 문자열을 반복문에 넣기 전엔 리스트 함수를 꼭 검토해보자.
<리스트 컴프리 헨션으로 반복문, 조건문, 리스트 선언을 한번에>
이제 리스트 컴프리 헨션 사용이 점점 더 익숙해져 간다.
오늘은 조건문까지 조합해서 해답을 작성해봤다.
문제 풀이 '배열의 유사도'이다.
문자열 리스트 s1과 s2에서 같은 값이 몇개있는지 구하는 문제다.
팀원 분들과 함께 모은 의논해본 풀이법은 반복문을 이중으로 쓰거나,
반복문과 조건문을 조합하는 방법 두가지인데 우리는 두번째 방법을 썼다.
어렵지 않은 문제라 금방 풀어냈다.
s1 = ["a", "b", "c"]
s2 = ["com", "b", "d", "p", "c"]
def solution(s1, s2):
list1 = [x for x in s1 if x in s2]
answer = len(list1)
return answer
print(solution(s1, s2)) #2
그리고 리스트 컴프리 헨션을 사용해서 반복문 조건문을 한번에 적는 걸 도전해봤다.
기존에 익숙했던,
[ x(의 가공) for x in 이터러블 데이터]
이런 형태는 금방 작성했다.
여기서 조건문을 더하고 싶으면 뒷 부분에 추가로 작성해준다.
[ x(의 가공) for x in 이터러블 데이터 if 조건식]
그럼 x가 조건식에 맞을 경우인 x들만 모인 리스트를 반환한다.