2024. 6. 18. 22:06ㆍ코드리뷰
공부하는허딩크 : https://www.youtube.com/live/f-2-t4MGKfc?feature=shared
처음 시작할때는 LV0의 정답률이 60%정도도 풀기 어려웠는데 이제는 LV1도 쉽지는 않지만 스스로 해결할 수 있다.
<첫번째 시도 : 맞았습니다.>
처음 문제를 읽고 나서 문제 지문이 글자수가 너무 길어 포기하려고 했다. 내가 느낀 프로그래머스이 문제는 간단하게 풀 수 있는 정도의 문제들이 많이 출제되는데 코드의 길이가 너무 길것으로 예상했다.
문제를 쭉 읽고 나서 어? 이거 차례로 코드를 작성하면 해결은 간단하겠네? 라는 착각을 하면서 들어갔다.
대부분의 조건은 문제가 없었으나, 연속되는 마침표를 한개의 마침표로 줄이고, 첫번째와 마지막의 마침표를 제거하는 부분에서 조금 헷갈렸지만 아래의 코드로 해결 할 수 있었다.
1. 컴프리헨션이 가끔씩 헷갈린다.
1) 기본형 : [표현식 for 항목 in 반복가능한_객체 if 조건]
2) else확장 : [표현식 for 항목 in 반복가능한_객체]
[표현식 if 조건 else 다른_표현식 for 항목 in 반복가능한_객체]
if와 else가 for 앞에 위치하는 이유는 조건부 논리가 <표현식>의 일부로 사용되기 때문입니다. 이 구조는 읽기 쉽고 이 해하기 쉬운 방식으로 조건부 논리를 포함할 수 있도록 합니다.
3) for중첩(평탄화) : matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [element for row in matrix for element in row]
print(flattened) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
큰for문이 먼저 나고오 작은 for문이 뒤에 나온다.
4) for중첩(조건부논리) : numbers = [1, 2, 3]
letters = ['A', 'B', 'C']
combinations = [(number, letter) for number in numbers for letter in letters]
print(combinations) # [(1, 'A'), (1, 'B'), (1, 'C'), (2, 'A'), (2, 'B'), (2, 'C'), (3, 'A'), (3, 'B'), (3, 'C')]
개별적으로 고려해서 for 앞에 2개의 변수로 조건을 걸 수 있다.
5) for중첩 확장 : numbers = [1, 2, 3]
letters = ['A', 'B', 'C']
combinations = [(number, letter) for number in numbers for letter in letters if number != 2]
print(combinations) # [(1, 'A'), (1, 'B'), (1, 'C'), (3, 'A'), (3, 'B'), (3, 'C')]
for뒤에 if로 조건을 걸 수 있다.
<다른사람풀이 참조>
이제 내 코드를 조금은 믿어도 되겠는데??? 다른 사람들 대비 그렇게 많이 부족해 보이지 않는다.
1. 정규식은 일단 보류.. 읽어만 보자.
2. 아래의 코드가 나와 많이 유사함.
1단계. 다른 문자가 나와도 new_id.lower()를 하면 무시됨.
2단계. 나는 별도의 변수로 안되는 것들을 제외했는데, 아래는 되는 것들만 가져옴.
3단계. (이게 가장 고민했던 부분인데) 비슷하지만 아래가 더 가독성이 좋음
while '..' in answer:의 반복문 조건
4단계. (이것도 나는 조금 어려웠던 부분) 비슷하지만, 나는 out of index에러로 고생함
answer = answer[1:] if len(answer) > 1 else '.'로 해결
추가 : answer[:-1]을 하면 마지막 요소 제외 가능
나는 그냥 어렵게 풀었을 뿐이네....
'코드리뷰' 카테고리의 다른 글
[python_파이썬_Summer/Winter Coding(~2018)]프로그래머스_LV1_소수 만들기_풀이_★소수알고리즘, 조합 (0) | 2024.06.20 |
---|---|
[python_파이썬_2020 카카오 인턴십]프로그래머스_LV1_키패드 누르기_풀이 (0) | 2024.06.19 |
[python_파이썬_2021 Dev-Matching: 웹 백엔드 개발자(상반기)]프로그래머스_LV1_로또의 최고 순위와 최저 순위_풀이 (0) | 2024.05.31 |
★[python_파이썬_2022 KAKAO TECH INTERNSHIP]프로그래머스_LV1_성격 유형 검사하기_풀이 (0) | 2024.05.29 |
[파이썬&python]프로그래머스_LV1_카드 뭉치_풀이 (0) | 2024.05.28 |