PS 일지 (2021.10.21)
시험 준비때문에 너무 바빠서 게임이론 문제를 풀만한 시간이 안됐다..
그래서 오늘은 GolfScript나 가지고 좀 놀아보자는 생각이었다.
22193. Multiply
Bronze 5
일단 C++로 짜려면 상당히 어려운 문제지만 Python으로는 간단히 풀 수 있는 문제이다.
nm = input() # 필요없는 입력
a = int(input())
b = int(input())
print(a*b)
마음에 별로 안들었다. 그런데 알고있는 GolfScript 문법을 최대한 쓰면 풀 수 있을 것 같았다.
당시 알고있던 문법은 얘네밖에 없었다.
~
: 스택에 원소들을 dump+
,-
,*
,/
: 스택에서 원소 두 개를 뽑아 연산@
: 스택에서 상위 세 원소를 회전 ([1,2,3] => [2,3,1])
알고있던 걸로 충분했다 바로 코드를 짜기 시작했고 이렇게 나왔다.
~@0*+@0*+*
이는 다음 순서로 진행되는 코드이다. (한줄에 연산 하나씩)
3, 4, 123, 4567
3, 123, 4567, 4
3, 123, 4567, 4, 0
3, 123, 4567, 0
3, 123, 4567
123, 4567, 3
123, 4567, 3, 0
123, 4567, 0
123, 4567
561741
보다시피 10byte짜리 코드가 완성됐다.
그리고 숏코딩 순위를 봤는데... 맙소사 1위분이 GolfScript로 5byte를 찍어두셨다.
다시 위키를 정독했고 두가지 연산을 더 알았다.
\
: 상위 두 원소를 swap;
: pop
와.. 나름 유용한 언어구나?! 라고 생각한 뒤 다시 코드를 짠 결과는 다음과 같다.
~*\;\;
완전 간결한 코드다. 순서는 다음과 같다. (역시 한 줄에 연산 하나씩)
3, 4, 123, 4567
3, 4, 561741
3, 561741, 4
3, 561741
561741, 3
561741
이렇게 6byte짜리 코드가 완성되었다..
1위 분 코드는 다음과 같았다.
~*p;;
..?
p가 뭔지.. 보자..
Convert to a string using ` (inspect) and print followed by variable n. Same deal as ruby. Implemented as:
{`puts}:p;
하..하나를 출력하는건가..?
맞..맞는.. 거같다..
지식이 늘어따..
Author And Source
이 문제에 관하여(PS 일지 (2021.10.21)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dnr6054/PS-일지-2021.10.21저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)