본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 03. 1부터 100까지 번갈아 더하고 빼는 문제 해결하기

by 제이투더문 2024. 6. 21.

 

 안녕하세요, 작가 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 문을 통해 처리하는 것이 훨씬 익숙할 것 같습니다.

 

마무리

 

 풀이 방법은 다양합니다. 앞으로는 페스티벌 문제 풀이에 그치지 않고, 저도 여러 방향으로 시도해 보겠습니다. 블로그를 통해 다양한 풀이 방법을 공유하겠습니다. 감사합니다!