오늘은 뭘 풀까 둘러보다가 제목이 '쉽게 푸는 문제'인 걸 발견했다. 근데 실패로 떠있는거다. 언제 틀린거지?

확인해보니 2년 전에 틀렸다. 문제를 다시 읽고 코드를 살펴보니, 전에 문제를 제대로 이해하지 못했었다.

 

입력이 3 7 이면 출력은 15가 나와야한다.

그러니까, 수열의 모양이 1 2 2 3 3 3 4 4 4 4 .... 이런 식으로 n, (n+1)이 (n+1)개, (n+2)가 (n+2)개... 의 형태이다.

즉 수열의 3번째~7번째를 모두 더하면 2+3+3+3+4 = 15가 나오는 것이다.

근데 당시의 나는 3과 7 사이의 값인 4+5+6 = 15 라고 생각했던 것. (심지어 아까도 그렇게 착각했음)

 

<코드>

#include <stdio.h>
#define start 1

int main() {
	int a, b;
	int c = 1;
	int n = 0;
	int sum = 0;
	scanf_s("%d %d", &a, &b);

	for (int i = start + 1; i < 1002; i++) {
		for (int j = start; j < i; j++) {
			// printf("%d ", c);
			n++;
			if (n >= a && n <= b) {
				sum += c;
				if (n == b)
					break;
			}
			else if (n == a && n == b) {
				sum += c;
				break;
			}
			else{}
		}
		c++;
		if (n == a - 1 && a == b) // a와 b가 같은 상황에서, 자꾸 1 전에 break로 루프를 빠져나가서 조건 명시. 
			continue;
		if (n == b) // 위에서 break 되는 조건을 만족시킬 경우 for문 전체 종료.
			break;
	}

	printf("%d", sum);

	return 0;
}

 

그냥.. 문제를 이해만 한다면 풀 수 있는 문제였다.

시간이 좀 걸리긴 했다. 머리가 좀 안 돌아가서 말이다

출력 나오는 거 보면서 범위랑 조건을 수정해줬다. 이런 문제에도 이 정도의 시간을 쓰는 거 보면 코테는 진짜..ㅋㅋ 망할듯.