백준 27903 인생 문제 풀이
백준 27903 인생 문제 풀이
백준 온라인 저지, 27903번: 인생
도입
코드 안에 백준 아이디를 구성하는 그 어떤 문자도 포함할 수 없다. 아이디가 belline0124
이므로 b
, e
, i
, l
, n
, 0
, 1
, 2
, 4
를 코드에 사용할 수 없다.
풀어보기
아이디에 포함된 문자 피하기
문자도 결국 일정한 정수로 표현할 수 있다.
문자 | 수 | 문자 | 수 |
---|---|---|---|
b | 98 | 0 | 48 |
e | 101 | 1 | 49 |
i | 105 | 2 | 50 |
l | 108 | 4 | 52 |
n | 110 |
아이디에 포함된 숫자 피하기
정수로 문자를 표현할 수 있지만, 아이디에 숫자가 포함된 경우 숫자 역시 간접적으로 표현해야 한다.
1
2
3
4
5
#DEFINE ZERO 5 - 5
#DEFINE ONE 6 - 5
#DEFINE TWO 7 - 5
#DEFINE FOUR 9 - 5
#DEFINE TEN 5 * TWO
난해한 프로그래밍 언어 사용하기
아이디에 따라 상황이 다르겠지만, 일반적으로는 print
, printf
, cout
, echo
등도 사용할 수 없을 가능성이 높다. 루비의 사전 정의 변수인 $>
정도는 되어야 할 것으로 보인다.
루비를 사용하는 것도 아이디가 모든 숫자 문자를 포함하는 경우에 풀이가 불가능하다.
하지만 난해한 프로그래밍 언어는 보통 알파벳과 숫자 문자를 사용하지 않으므로 아이디에 포함된 문자를 피하고 코드를 작성할 수 있다.
사실은 위의 문자 피하기, 숫자 피하기 전략 역시 난해한 프로그래밍 언어에서는 자주 사용하는 전략이다.
대표적으로 아희와 엄준식은 한국어 문자셋을 사용하고, 브레인퍽은 몇 개의 특수문자만을 사용한다. 즉 이 문제에서 모든 아이디에 대해 대응이 가능한 방법은 난해한 프로그래밍 언어를 사용하는 것이다.
1
2
3
4
5
6
7
8
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅
마무리
답안에는 가장 익숙한 난해한 프로그래밍 언어, 아희를 사용했다.