[BOJ 16114] 화살표 연산자
View as PDF
Submit solution
Points:
2
Time limit:
1.0s
Memory limit:
512M
Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
NOTE: 이 문제의 내용은 C++11 이후의 표준을 따릅니다.</p>
새내기들을 위해 C++ 스터디를 준비하던 키파는 인터넷에서 신기한 연산자를 발견했다. 바로 화살표 연산자(<--)이다.
| 프로그램 | 출력 |
#include <iostream> |
9 |
위와 같이 화살표 연산자를 사용하면 연산자 오른쪽에 있는 변수가 연산자 왼쪽의 값을 향해 다가간다! 심지어 이 연산자는 화살표의 길이(-의 개수)를 늘려서 값이 바뀌는 속도를 더 빠르게 할 수도 있다.
| 프로그램 | 출력 |
#include <iostream> |
8 |
화살표의 길이가 2인 첫 번째 코드에서는 수가 9개 출력되었으나, 길이를 4로 늘린 두 번째 코드에서는 수가 4개밖에 출력되지 않았다. 변수가 2배 빠르게 값으로 다가간 것이다!
사실 이 화살표 연산자는 전위 감소 연산자(prefix decrement operator, --x)를 이용한 농담으로, 0 <-- x은 --x > 0을 화살표처럼 보이도록 눈속임한 것이다. 따라서 첫 번째 코드의 반복문은 아래와 같이 동작한다.
x의 값을 1 감소시킨다.- 만약
x의 값이 0보다 크지 않다면 프로그램을 종료한다. x의 값을 출력하고 처음으로 돌아간다.
감소 연산자는 아래와 같은 특징이 있다.
-가 여러 개 연속되어 있을 때는 반드시 앞에서부터 두 개씩 끊어서 해석된다. 예를 들어------x는-- - -- -x또는- -- - --x등이 아니라 반드시-- -- --x로 해석된다.- 감소 연산자는 단항 부정 연산자(unary minus operator,
-x)가 적용된 식에는 적용할 수 없다. 예를 들어-----x는-- -- -x로 해석되고, 감소 연산자가-x에 적용되었으므로 컴파일에 실패한다.
두 번째 코드의 0 <---- x는 -- --x > 0과 같고, 감소 연산자가 두 번 적용되었으므로 x의 값이 한번에 2씩 줄어든다.
위의 코드에서 x의 초기값과 화살표의 길이를 바꿨을 때, 몇 개의 수가 출력될지 예상해 보자.
입력 형식
첫 줄에 변수 x의 초기값을 뜻하는 정수 X와 화살표의 길이를 뜻하는 정수 N(-100 ≤ X ≤ 100, 0 ≤ N ≤ 10)이 주어진다.
출력 형식
첫째 줄에 프로그램의 실행 결과를 출력한다.</p>
- 만약 프로그램이 정상적으로 종료된다면 프로그램이 출력한 수의 개수를 출력한다.
- 만약 프로그램이 무한히 많은 수를 출력한다면
INFINITE를 출력한다. - 만약 프로그램이 지문에 주어진 조건에 의해 컴파일에 실패할 경우
ERROR를 출력한다.
세 번째 예시는 x의 값이 항상 3이므로 프로그램이 3을 무한히 출력한다.
Comments