티스토리 뷰

MAO

0010. Increment

jwvg0425 2020. 5. 27. 23:57

https://mao.snuke.org/tasks/10

 

Problem 0010 - Increment

Run Stop Step Reset Submit

mao.snuke.org

맨 처음에는 제일 간단한 생각부터 시작해서 짰다. 커서 하나 만들고 -> 맨 끝으로 옮기고 -> 맨끝에서 값 1 올리고 -> 그게 2가 되면 앞자리 1증가시켜주고 -> 반복.

_0:0_
_1:1_
0_::1
1_:2
02::10
12:20
2::10
:_

그래서 이렇게 짰다. 8 라인.

조금 생각해보니, 2를 별도로 처리할 필요가 없을 것 같아 이 부분을 묶어서 처리하게 바꿨다. 커서를 맨 오른쪽으로 보내고 -> 보낸 다음 해당 커서를 +1을 나타내는 형태로 변경(_). 0_ 이 나오면 1로 바꾸고, 1_이 나오면 _0 으로 바꾸는 식으로 처리할 경우 재귀적으로 같은 과정을 반복하며 끝까지 갈 수 있다.

+0:0+
+1:1+
+:_
0_::1
1_:_0
_::1
:+

이렇게 할 경우 7라인.

커서를 두종류 쓰는거 때문에 +를 _로 바꾸는 과정에서 한 라인이 소모되는데, 여기서 이렇게 안 하고, +가 두개 쌓이면 그 순간 그걸 다른 종료의 커서로 취급해버리면 한 라인을 아낄 수 있다. 이 방법이 상당히 유용함.

0++::1
1++:++0
++::1
+1:1+
+0:0+
:+

그래서 최종적으로 이렇게 6라인으로 줄였다.

'MAO' 카테고리의 다른 글

0032. Log  (0) 2020.05.28
0025. Balanced  (0) 2020.05.28
Markov Algorithm Online  (0) 2020.05.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함