파이썬 알고리즘 : Moo게임, 문자열폭탄, 스카이라인

2023년 7월 30일 알고리즘 문제풀이 백준 5904번 문제 링크 1차 시도 나의 생각 재귀 함수를 통해 각 문자열을 구할 수 있었다. 또한 그 문자열의 길이도 규칙적이므로 몇번째 재귀에서 n번째 문자열이 등장하는지를 알아내어 그 문자열의 index를 통해 구하였다. 하지만 메모리 초과와 시간 초과로 인하여 오답처리 되었다. 결과 오답 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import sys sys.setrecursionlimit(10**6) n = int(sys.stdin.readline()) def moo(k): if k == 0: return 'moo' return moo(k-1)+'m'+'o'*(k+2)+moo(k-1) i = -1 while True: i += 1 tmp = moo(i) if len(tmp) >= n: print(tmp[n-1]) break 2차 시도 나의 생각 문자열을 구하면 안된다고 생각하였다. 다음 문자열이 이전 차례의 문자열 두개에 하나의 규칙적인 문자가 껴있는 형태라는 사실에 집중하였다. 예를 들어 S(10)의 몇번째 문자열인지는 S(9)의 문자열을 통해 알 수 있다. 원리는 다음과 같다. ...

2023년 7월 30일 · 8 분 · 배준수

파이썬 알고리즘 1주차 : 재귀함수

1.개발 진행 및 완료상황 1주차 Pyton Algorithm 문제 진행중(재귀함수) Python Algorithm 5강 학습 완료 업무, 개발 중 발생한 이슈/고민 또는 이를 해결한 내용 여러 줄의 input값을 지정하는 경우 이 코드를 이용해 해결하였다. 첫째줄에는 2개, 둘째줄은 셋째줄부터 input 줄의 갯수였다. import sys data = [] for i in range(2): data.append(list(map(int,sys.stdin.readline().split()))) 새로 배운 내용 재귀함수 set, pos의 특성 제곱근 (3**2) 리스트의 원소를 하나의 문자열로 만들기(join) 참고할 만한 레퍼런스들 자료구조와 함께 배우는 알고리즘 입문 파이썬편(BohYoh Shibata 지음, 강민 옮김, 이지스 퍼블리싱) ...

2023년 3월 7일 · 1 분 · 배준수