문제가 길어서 링크로 대체한다.
https://algospot.com/judge/problem/read/DRAGON
한 세대의 문자열을 요구하는 만큼 출력하면 되는 문제이다.
이 문제는 문자열을 다루는 거라 처음엔 쉬워보였지만, 막상 하려니 매우 어려웠다.
다른 풀이를 찾아봐도 이해가 가지 않았기 때문에, 대충 여러 군데를 보며 참고만 하여 코드를 만들었다.
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
32
33
|
# dragon
def memorize():
memo[0]=1
for j in range(1,51):
memo[j]=memo[j-1]*2+2
def make(curve,gen,skip):
if gen == 0:
return curve[skip]
for o in curve:
if o=='X' or o=="Y":
if skip>=memo[gen]:
skip-=memo[gen]
elif o=='X':
return make('X+YF',gen-1,skip)
else:
return make('FX-Y',gen-1,skip)
elif skip>0:
skip-=1
else:
return o
memo=[-1]*51
case = int(input())
memorize()
for i in range(case):
n, p, l = map(int, input().split())
result=""
for k in range(l):
result += str(make('FX',n,p+k-1))
print(result)
|
나중에 시간이 된다면 천천히 코드를 돌아보고 싶다.
느낀점:
1. 쉬워보이는 문제였는데 많이 어려워서 놀랐다. 문자열들을 보면서 규칙을 찾아 해결하려 했는데 그것도 잘 되지 않아 이렇게 남의 코드를 찾아가며 풀 수 밖에 없었다.
2. 방학이 되었으니 블로그 활동을 좀 더 활발히 할 예정이다.
'코테용 문제풀이 > 알고스팟' 카테고리의 다른 글
알고스팟 승률올리기 (RATIO) 문제 파이썬으로 풀기 (0) | 2020.01.07 |
---|---|
알고스팟 원주율 외우기 (PI) 문제 파이썬으로 풀기 (0) | 2020.01.05 |
알고스팟 쿼드 트리 뒤집기 (quadtree) 문제 파이썬으로 풀기 (0) | 2019.12.17 |
알고스팟 PPAP (PPAP) 문제 파이썬으로 풀기 (0) | 2019.12.05 |
알고스팟 Domino (DOMINO) 문제 파이썬으로 풀기 (0) | 2019.12.04 |