프로그래머스 짝수의 합 (알고리즘)
Lv 0
문제 푸는건 5초 정리는 10분…
- 하루 시작은 알고리즘 한 문제 풀기로 시작
- 자바가 특히 헷갈려서 언어에 익숙해질겸 lv_0부터 다시 하는게 나을 듯
-
어차피 기본기가 안되면 뭘 배워도 응용이 안됨
- 문제 -> https://school.programmers.co.kr/learn/courses/30/lessons/120831
Java
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=0;i<n+1;i+=2){
answer += i;
}
return answer;
}
}
// 다른사람풀이
정리
- pass
Python
# 내가 푼 답 (틀림)
def solution(n):
return sum([x+1 for x in range(n+1)if x%2])
(수정)
def solution(n):
return sum([x for x in range(n+1) if x%2 == 0])
# 다른 사람 풀이 1
def solution(n):
return sum([i for i in range(2, n + 1, 2)])
정리
- 조건부분을 좀 더 정확하게 쓰자.
- range 에서 그냥 조건을 걸어두면 if 문을 사용할 필요가 없었다.
JavaScript
// 내가 푼 답
function solution(n) {
var answer = 0;
for(i=0; i<n+1; i++){
if(i%2 == 0){
answer += i
}
}
return answer;
}
// 다른 사람 풀이1
function solution(n) {
var half = Math.floor(n/2);
return half*(half+1);
}
// 다른 사람 풀이2
function solution(n) {
var answer = 0;
for(let i=2 ; i<=n ; i+=2)
answer += i;
return answer;
}
정리
- 풀이 2를 보면 if문이 따로 실행 될 이유가 없으니 더 좋은 코드라고 생각된다.
출처 : 프로그래머스,
댓글남기기