본문 바로가기
Algorithm/📖Baekjoon

#1789 수들의 합

by yewoneeee 2022. 4. 20.

# 문제

# 입력 및 출력

# 풀이

문제도 매우 간단하다

일단 문제를 보자마자 든 생각이 n이 최대가 되려면 1부터 순차적으로 더해야 한다고 생각했다

그래서 s를 1부터 순차적으로 빼주기로 했다

s의 범위가 int범위라고 생각했는데 unsinged int범위였다ㅋㅋ

그것도 모르고 그냥 풀었다가 자꾸 틀렸다고 해서 또 구글링했다ㅋㅋㅋㅋ

거기서 long long 쓰는 거 보고 알아챘다

 

처음 코드가 아래와 같음

#include <iostream>
using namespace std;

int main() {
	int s, i = 1;
	cin >> s;
	while (s > 0) {
		s -= i;
		if (s < i) break;
		i++;
	}
	cout << i;
}

 

근데 구글링하니까 다들 s에서 빼는 방식말고 num변수를 하나 선언해서 더하는 방식으로 알고리즘을 짰길래

덧셈으로 해야하는 줄 알고 나도 덧셈으로 바꿨다ㅋㅋ

#include <iostream>
using namespace std;

int main() {
	long long s, num = 0, count = 1;
	cin >> s;
	while (1) {
		num += count;
		if (num > s) {
			count--;
			break;
		}
		count++;
	}
	cout << count;
}

근데 long long 문제인 걸 알고 처음 내가 짠 알고리즘도 long long 때문이 아닌가 싶어서 바꿔서 돌려보니까 잘 돌아가더라

#include <iostream>
using namespace std;

int main() {
	long long s, i = 1;
	cin >> s;
	while (1) {
		s -= i;
		if (s <= i) break; // 등호 중요!
		i++;
	}
	cout << i;
}

내가 보기엔 마지막 코드가 제일 가독성이 좋아보임

ㅋㅋㅋㅋ무지성으로 제출해서 계속 틀린거,,

'Algorithm > 📖Baekjoon' 카테고리의 다른 글

#13305 주유소  (0) 2022.04.22
#1991 트리 순회  (0) 2022.04.21
#1463 1로 만들기  (0) 2022.04.19
#1152 단어의 개수  (0) 2022.04.19
#1157 단어 공부  (0) 2022.04.18

댓글