Taene's
[백준] 브론즈V-크냐? C++ 4101번 본문
문제
두 양의 정수가 주어졌을 때, 첫 번째 수가 두 번째 수보다 큰지 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 두 정수가 주어진다. 두 수는 백만보다 작거나 같은 양의 정수이다. 입력의 마지막 줄에는 0이 두 개 주어진다.
출력
각 테스트 케이스마다, 첫 번째 수가 두 번째 수보다 크면 Yes를, 아니면 No를 한 줄에 하나씩 출력한다.
예제 입력 1 복사
1 19
4 4
23 14
0 0
예제 출력 1 복사
No
No
Yes
처음 소스코드:
#include <iostream>
using namespace std;
int main()
{
int a, b;
bool isZero = false;
while (isZero==false)
{
cin >> a >> b;
if (a == 0 && b == 0) {
isZero = true;
}
if (a > b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
최종 소스코드:
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b)
{
if (a == 0 && b == 0) {
break;
}
if (a > b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
접근방법: 처음에는 bool로 (a,b)=(0,0)을 체크해서 구분하면 편하겠다 싶어서 그렇게 했었는데, while문을 쓰면 break로 빠져나오면 되니까 bool을 사용안하고도 로직이 이어질 수 있었다.
+ 꽤 많이 실패했는데 그 이유가 printf에 줄바꿈\n을 추가안해서... 자꾸 왜 틀리는거지 싶었다. 다음부턴 꼼꼼하게 보자!
ios::sync_with_stdio(false);
cin.tie(0);
알게된 점: 서칭하다가 다른 사람의 답변에 위의 두 줄이 추가되어 있어서 뭔지 찾아봤는데 위 코드를 작성하면 입출력 속도가 빨라져서 시간초과로 실패한 문제들을 성공시킬 수 있다고 한다. 다만 이 코드를 사용하면 기존 C의 표준 입출력인 scanf, printf, getchar 함수를 사용하면 오류가 발생할 수 있다고 한다. C++의 입출력인 cin, cout만 사용하도록 주의해야한다.
'백준 > 브론즈' 카테고리의 다른 글
[백준] 브론즈V-킹, 퀸, 룩, 비숍, 나이트, 폰 C++ 3003번 (0) | 2023.08.23 |
---|---|
[백준] 브론즈V-Shares C++ 3733번 (0) | 2023.08.23 |
[백준] 브론즈V-아! C++ 4999번 (0) | 2023.08.23 |
[백준] 브론즈V-콜센터 C++ 5339번 (0) | 2023.08.23 |
[백준] 브론즈V-웰컴 C++ 5337번 (0) | 2023.08.23 |