안녕하세요, 작가 J입니다. 최근 집에서 일과 데이터베이스 포스팅 관련 문제로 블로그를 5일간 쉬었습니다. 게을렀던 제 자신을 반성하며, 다시 열심히 포스팅하도록 하겠습니다.
[Java Festival 03] 1부터 100까지 번걸아 더하고 빼는 문제 해결하기
1 - 2 + 3 - 4 + ··· + 99 - 100 를 계산하여 답을 출력하시오.
문제 요약
문제는 1부터 100까지의 숫자를 번갈아 가면서 더하고 빼는 것입니다. 수식으로 나타내면 다음과 같습니다.
1−2+3−4+5−6+⋯+99−100
문제 분석
일단 문제를 살펴보면, 1부터 100까지의 숫자가 나열되어 있어 복잡해 보입니다. 또한, +와 -가 번갈아 나타나기 때문에 시각적으로 어지러울 수 있습니다. 처음부터 번갈아 더하고 빼는 것에 집중하지 말고, 1부터 100까지의 숫자에 주목해 보겠습니다.
단순히 1부터 100까지의 숫자가 나열되는 구조입니다. 이제 반복문을 활용하여 1부터 100까지 출력할 수 있습니다. 그리고 각 숫자가 홀수인지 짝수인지를 판별하여 더하거나 빼는 작업을 수행하면 됩니다.
코드 풀이
일단 제 풀이를 첨부하겠습니다.
public class Main {
public static void main(String[] args) {
int sum = 0; // 1부터 100까지 계산한 합을 더하기 위한 변수
for (int i = 1; i <= 100; i++) {
System.out.print(i % 2 == 0 ? "-" + i + " " : i + " ");
sum = i % 2 == 0 ? sum - i : sum + i; // 짝수면 그 숫자를 마이너스, 홀수면 그 숫자를 플러스 해주기
}
System.out.println();
System.out.println("결과 : " + sum);
}
}
저는 if 문을 사용하지 않고 삼항 연산자를 사용하여 처리했습니다. 실제로 삼항 연산자는 일할 때 많이 쓰지 않기 때문에 이럴 때 사용하면 좋습니다. 하지만 코드를 보면 for 문 안쪽 문장들이 가독성이 좋지 않습니다. 본인의 마음에 들게 풀이하는 것도 중요하지만, 상대방이 내 코드를 보고 해석을 쉽게 할 수 있도록 작성하는 것이 가장 좋은 코드라고 생각합니다.
가독성 높은 코드
그래서 최대한 간단하게 풀어보면 다음과 같습니다.
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum -= i;
System.out.print("-" + i + " ");
} else {
sum += i;
System.out.print(i + " ");
}
}
System.out.println();
System.out.println("결과 : " + sum);
}
}
막상 코드를 풀어놓고 나니, 위의 제 풀이와 차이가 크게 느껴지진 않습니다. 하지만 초보자 분들에게는 if 문을 통해 처리하는 것이 훨씬 익숙할 것 같습니다.
마무리
풀이 방법은 다양합니다. 앞으로는 페스티벌 문제 풀이에 그치지 않고, 저도 여러 방향으로 시도해 보겠습니다. 블로그를 통해 다양한 풀이 방법을 공유하겠습니다. 감사합니다!
'프로그래밍 기초 > Java Festival' 카테고리의 다른 글
[Java Festival] 05. 입력받은 행 개수에 따라 별 출력하기 (0) | 2024.06.22 |
---|---|
[Java Festival] 04. 거스름돈 문제 해결하기 (0) | 2024.06.21 |
[Java Festival] 02. 시급 계산기 구현하기: 초과 근무 시급 계산 프로그램 (0) | 2024.06.16 |
[Java Festival] 01. 다이어트 프로그램 구현하기: 목표 몸무게 달성 프로그램 (0) | 2024.06.16 |
[Java Festival] 프로그램 소개 및 룰 설명 (0) | 2024.06.15 |