# 문제
# 입력 및 출력
# 풀이
문제도 매우 간단하다
일단 문제를 보자마자 든 생각이 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 |
댓글