-
[구름톤 챌린지 Week1(2)] 구현 중심 문제 테크닉 기본Challenges/구름톤 챌린지 2023. 8. 19. 18:01
리스트 컴프리핸션(list comprehension)은 파이썬에서 리스트를 생성할 때 사용하는 간결하고 읽기 쉬운 방법입니다.
기존의 for 루프 문법을 사용하여 리스트를 만드는 것보다 더 간단하게 표현할 수 있습니다.기본 구조는 다음과 같습니다:
[expression for item in iterable if condition]
- expression은 현재의 item에 대한 연산이나 처리 결과입니다.
- item은 iterable로부터 가져온 각각의 원소를 나타냅니다. ( expression과 함수적으로 관련 없다면 _ 를 써도 무방합니다. )
- iterable은 반복 가능한 객체입니다.
- condition은 선택적 조건으로, 이 조건을 만족하는 item에 대해서만 expression이 수행됩니다.
예시:
- 기본적인 리스트 컴프리핸션: 0부터 9까지의 숫자를 제곱한 리스트를 만들기
squared_numbers = [x**2 for x in range(10)] print(squared_numbers) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
- 조건을 포함한 리스트 컴프리핸션: 0부터 9까지의 숫자 중 짝수만 제곱하기
squared_even_numbers = [x**2 for x in range(10) if x % 2 == 0] print(squared_even_numbers) # [0, 4, 16, 36, 64]
- 코테 빈출 : N줄에 걸쳐 값을 입력받아 저장하기
c = [int(input()) for _ in range(N)]
리스트 컴프리핸션은 코드를 간결하게 만들어 줄 뿐만 아니라, 읽는 사람이 의도를 빠르게 파악할 수 있도록 도와줍니다. 하지만 너무 복잡한 로직을 담는다면 오히려 가독성이 떨어질 수 있으므로 적절한 복잡도에서 사용하는 것이 좋습니다.
복습퀴즈
- 문자열을 split() 적용시 저장되는 데이터타입은?
답 : list (리스트, 따라서 배열로 특정 항목 접근가능!)- 숫자 여러개 (예 : '11 2 4 5')에 map(int, input().split()) 적용시 데이터타입은?
답: map 객체 (따라서 리스트로 형변환 해야함!)result = map(int, input().split()) print(result) # <map object at (some memory address)> print(list(result)) # [integer values based on input]
정렬 (sort)
파이썬에서는 sort() 함수 또는 sorted() 함수를 이용해 쉽게 정렬할 수 있다.
주의 : 기본 '오름차순' 기준이다!비교-확인
로직은 check=True로 기본설정 -> if문으로 비교 후 틀리면 check=False로 수정 -> for문으로 감싸서 이 과정 반복 -> check 값에 따라 출력값 결정(if문)
추가로 check 없이 사용하는 for-else 문이 있었다.
''' for i in range(N): if 조건문: break else: 코드 와 같은 꼴로 사용합니다. 만약 for문 중간에서 break가 실행되면 else 부분을 실행하지 않습니다. break에 걸리지 않고 for문이 끝까지 도는 경우 else 부분을 실행합니다. ''' for i in range(N): if arr[i] != sortedArr[i]: # 배열이 다른 경우이므로 0을 출력하고 else 부분을 건너뜁니다. 즉, 프로그램을 종료합니다. print(0) break else: # 만약 break없이, for문이 온전히 끝났다면 이 else 부분을 실행합니다. print(sum(arr))
구름톤 4일차 - 햄버거 문제
정해의 방식과 내 코드 비교해보자면
정해는 우선 최댓값 기준으로 좌우 나눠서, 정렬한 값을 정답으로 변수 지정하고 비교하는 방식
내 코드는, 좌우 나누는 것 까지는 동일, 인접한 두개를 계속 비교해나가는 방식##for i in range(max_index + 1, N): #오른쪽 비교 for i in range(max_index - 1, -1, -1): ## 왼쪽 비교 if freshness[i] > max_value: return 0 max_value = freshness[i]
좀더 스스로에게 챌린지를 하자면, 다른 언어들의 해설도 리뷰하고 싶다.
이렇게 친절하게 다 알려주는데... 냉큼 받아먹어야 하지 않겠나..!!'Challenges > 구름톤 챌린지' 카테고리의 다른 글
[구름톤 챌린지 Week4(2)] 시뮬레이션, 구현시 주의점, 챌린지 마무리 (0) 2023.09.10 [구름톤 챌린지 Week4(1)] 그래프 탐색 전략 (DFS, BFS) (0) 2023.09.10 [구름톤 챌린지 Week2(2)] 완전 탐색 중심 / 바둑판 원하는 값으로 채우는 방법 (0) 2023.08.24 [구름톤 챌린지 Week2(1)] 완전 탐색 중심 / 문자열 쪼개기 / 2차원 배열 (0) 2023.08.22 [구름톤 챌린지 Week1(1)] 더는 미룰 수 없다, 코딩테스트 / 코테기본 (0) 2023.08.18