문제 링크
문제
문제 해석
연속된 세 수 사이에 곱셈과 나눗셈을 한번씩만 사용해서 가장 큰 값를 구하는 문제이다.
세 수의 위치는 변하지 않기 때문에 연산 기호의 위치만 서로 바꿀 수 있다.
코드
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = N; i >= 1; i--) {
cout << i << '\n';
}
return 0;
}
문제 풀이
변수 N을 만들고 N에 정수를 입력받는다.
반복문 for의 초기화식을 i = N으로 만들어서 입력값부터 먼저 출력할 수 있게 한다.
조건식은 i가 1 이상이면 아래 코드를 반복하도록 만들고, 증감식은 '--' 연산자로 1씩 감소시킨다.
반복문 내에서 i를 출력하면 처음 i에 저장된 N이 출력되고 이후 N - 1, N - 2, ... , 1이 차례대로 출력된다.
알고 있으면 쓸모있는 거
출력 시에 다음 줄로 넘겨주는 개행문자에 대한 것이다.
개행 기능을 가진 문자는 C++에서 '\n'과 'endl'이 있다.
위 코드에서는 '\n'을 썼으나, 처음 문제를 풀었을 때는 'endl'을 사용했고 그 결과는 시간초과였다.
그 이유는 버퍼에 있다.
'endl'은 버퍼를 비우는 flush() 라는 함수를 끼고 있어서 '\n'보다 출력 시간이 오래 걸린다.
그래서 출력 시 속도 면에서
1등 : printf("%d", i);
2등 : cout << i << '\n';
3등 : cout << i << endl;
의 순위를 갖는다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 5361번 전투 드로이드 가격 (0) | 2023.01.06 |
---|---|
[백준/Python] #15917 노솔브 방지문제야!! (0) | 2023.01.06 |
[백준/Python] #15917 노솔브 방지문제야!! (0) | 2023.01.05 |
[백준/Python] 14579번 덧셈과 곱셈 (0) | 2023.01.05 |
[백준/C] 10797번 (0) | 2023.01.04 |