Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Sequelize
- nodejs
- typeORM
- MongoDB
- 공룡게임
- GIT
- AWS
- Bull
- 게임
- TypeScript
- Dinosaur
- flask
- mongoose
- Express
- Python
- MySQL
- jest
- dfs
- nestjs
- 정렬
- game
- Queue
- OCR
- react
- Nest.js
- class
- 자료구조
- cookie
- JavaScript
Archives
- Today
- Total
포시코딩
[프로그래머스][Lv.0] 짝수의 합 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120831
내 풀이 A
def solution(n):
if n % 2 == 1:
n -= 1
answer = n * (n/2+1) / 2
return answer
a 부터 b까지 c만큼 증가하는 값들을 모두 더한 값을 구하는 공식은 아래와 같다.
(a+b) * ((b-a)/c+1) / 2
피라미드식으로 증가하게 만들어 직각 삼각형을 만든 후 가로*세로/2 를 하면 원하는 값을 얻게되는 원리
n까지의 짝수의 합이니 n이 만약 9라면 0~8이여야 하니 홀수라면 -1을 해준다음
0부터 n까지 2만큼 증가하는 값의 합을 구하면 된다.
공식을 외우기 힘들지만 아래에서 사용하는 for문보다는 식 하나로 끝나기 때문에 훨씬 효율이 좋다.
내 풀이 B
def solution(n):
return sum([x for x in range(n+1) if x % 2 == 0])
for문을 썼다면 이렇게 풀었을듯
다른 풀이
def solution(n):
return sum(filter(lambda v: v % 2 == 0, [_ for _ in range(n+1)]))
lambda가 나왔고 [_ for _ in range(n+1)] 이라는 알 수 없는 식이 나왔다.
일단 이게 뭔지 알아야 나중에 써먹을 수 있을 것 같아 따로 공부를 해봤고,
언더바(_)에 대해서는 다음 출처를 통해 값을 무시하고 싶은 경우에 해당하는 사용법인걸 알 수 있었다.
https://mingrammer.com/underscore-in-python/
즉, 위 코드에서의 사용법은 아래와 같이 썼다는 것
result = [ _ for _ in range(5) ]
print(result) # [0, 1, 2, 3, 4]
lambda에 대해서도 더이상 미룰 수 없다 생각되어 공부했는데 생각보다 단순했다.
lambda 표현식 : 매개변수
이렇게 사용되는 익명함수인건데
filter()를 통해 _ for _ ranget()의 결과물에 대해 lambda 함수로 필터링한걸 리턴하라는 뜻.
결국 보기에만 어려워보였지 내가 푼 리스트 컴프리헨션 방법과 별반 다를게 없었다.
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스][Lv.0] 문자열 뒤집기 (0) | 2022.12.27 |
---|---|
[프로그래머스][Lv.0] 점의 위치 구하기 (0) | 2022.12.27 |
[프로그래머스][Lv.1] 숫자 문자열과 영단어 (0) | 2022.12.25 |
[프로그래머스][Lv.1][정렬] K번째수 (0) | 2022.12.25 |
[프로그래머스][Lv.1] 행렬의 덧셈 (0) | 2022.12.25 |