Algorithm/Basic

[JAVA] 홀짝에 따라 다른 값 반환

2024. 6. 6. 22:42
목차
  1. [Java]
  2. [Python]

양의 정수 n이 매개변수로 주어질 때, 

n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 

n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return

 

if (n%2 != 0)
	for (int i=1; i<=n; i+=2) answer += i;
else
	for (int i=2; i<=n; i+=2) answer += i*i;
return answer;

 

 

 

[Java]

if (n%2 != 0) {
            for (int i=1; i<=n; i++) {
                if (i%2 != 0) answer += i;
            }
        } else {
            for (int i=2; i<=n; i++) {
                if (i%2 == 0) answer += Math.pow(i, 2);
            }
        }

반복문과 조건문 사용: 명확하고 직관적이지만 다소 비효율적.

두 번째 루프에서 모든 i에 대해 Math.pow(i, 2)를 호출하는 것은 오버헤드가 있을 수 있다.

 

 

for(int i = n; i >= 0; i -= 2)
	answer += (n % 2 == 0) ? i * i : i;

단일 반복문과 조건 삼항 연산자 사용: 간결하지만 명확성이 떨어질 수 있음.

(n % 2 == 0) 조건이 반복문 안에서 매번 평가되므로 약간의 비효율성이 존재할 수 있다.

 

 

if (n % 2 == 1) {
            return (n + 1) * (n + 1) / 2 / 2;
        } else {
            return 4 * n/2 * (n/2 + 1) * (2 * n/2 + 1) / 6;   
        }

수학적 공식 사용: 매우 효율적이고 간결하지만 가독성과 유지보수성이 떨어질 수 있음.

복잡한 수학적 공식은 실수하기 쉽고, 디버깅이 어려울 수 있다.

 

  • 홀수의 합 공식: (1+n)/2⋅(n/2+1) ---> (n + 1) * (n + 1) / 4
  • 짝수 제곱 합 공식: 4⋅m(m+1)(2m+1)/6

 

 

if(n%2 == 0) {
	return IntStream.rangeClosed(1,n).filter(i->i%2==0).map(i->(int) Math.pow(i,2)).sum();
}
return IntStream.rangeClosed(1,n).filter(i->i%2==1).sum();

스트림 API 사용: 간결하고 가독성이 좋지만 성능과 복잡성에서 약간의 단점이 있음.

스트림 API는 내부적으로 반복문을 사용하기 때문에, 단순 반복문보다 약간의 성능 저하가 있을 수 있다.

 

 

 

  • 명확성과 가독성을 중시하는 경우: 반복문과 조건문을 사용하는 방식이 좋습니다.
  • 최대 효율성이 필요한 경우: 수학적 공식을 사용하는 방법이 좋습니다.
  • 간결성과 선언적 코드를 선호하는 경우: 스트림 API를 사용하는 방식이 좋습니다.

 

 

[Python]

if n%2:
	return sum(range(1,n+1,2))
return sum([i*i for i in range(2,n+1,2)])

 

 

 

저작자표시 비영리 변경금지
  1. [Java]
  2. [Python]
'Algorithm/Basic' 카테고리의 다른 글
  • [JAVA] 코드 처리하기 -- length(), charAt(), isEmpty()
  • [JAVA] 조건 문자열
  • [JAVA] n의 배수
  • [JAVA] 두 수의 연산값 비교
함s
함s
개발함
함s
함함ː
함s

CALENDAR

«   2025/05   »
일 월 화 수 목 금 토
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
  • 분류 전체보기 (210)
    • TIL (6)
      • thought (2)
    • Algorithm (81)
      • Basic (66)
      • Greedy (5)
      • Implementation (3)
      • DFS BFS (7)
      • Sorting (0)
    • Front (29)
      • HTML Css (7)
      • JavaScript (17)
      • Jquery (2)
      • Vue.js (2)
      • React.js (1)
    • Node.js (5)
    • Java (43)
      • Basic (22)
      • MVC -- JSP & Servlet (18)
      • Handler (1)
      • Data (2)
    • Spring (27)
      • Spring_inflearn (9)
      • Spring Boot (7)
      • MyBatis (1)
      • Spring Data JPA (7)
      • REST API (3)
    • SQL (2)
    • Mac (13)
    • Git (4)
    • Project (0)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기

인기 글

최근 글

hELLO · Designed By 정상우.
함s
[JAVA] 홀짝에 따라 다른 값 반환
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.