홀수일때는 길이 // 2 에 위치한 문자를 반환하고,짝수일때는 길이 // 2 - 1 ~ 길이 // 2 에 위치한 문자들을 반환하면 된다. def string_middle(str1): if len(str1) % 2 == 1: str2 = len(str1) // 2 return str1[str2] else: str2 = len(str1) // 2 return str1[str2 - 1 : str2 + 1] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(string_middle("power"))
평범하게 재귀함수 사용하면 시간초과가 된다.그래서 리스트에 값을 저장하는 방식으로 풀어보았다. def fibonacci(n): num = [0] * n num[0:1] = [0,1] if n == 0: return 0 if n == 1: return 1 for rpt in range(2, n + 1): num[rpt] = num[rpt - 1] + num[rpt - 2] return num[n] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(fibonacci(8))
N = int(input()) minus = 1 for Repeat in range(0, 2 * N - 1): if 2 * N - Repeat > N: for repeat in range(0, Repeat): print(" ", end = "") for Rpt in range(0, 2 * N - minus): print("*", end = "") minus += 2 if Repeat == N - 1: minus -= 4 else: for repeat in range(0, 2 * N - Repeat - 2): print(" ", end = "") for Rpt in range(0, 2 * N - minus): print("*", end = "") minus -= 2 print("")
소스를 조금 더 간단하게 해보려고 했지만 이게 최대인거 같다. N = int(input()) minus = 2 for Repeat in range(1, N * 2): if N - Repeat >= 0: for repeat in range(0, Repeat): print("*", end = "") for Rpt in range(0, N * 2 - minus): print(" ", end = "") for rpt in range(0, Repeat): print("*", end = "") minus += 2 if N - Repeat == 0: minus -= 4 else: for repeat in range(0, 2 * N -Repeat): print("*", end = "") for Rpt in range(..
지금까지 나온 문제들을 잘 섞어보자 N = int(input()) minus = 2 for Repeat in range(1, 2 * N): if N - Repeat >= 0: for repeat in range(Repeat, N): print(" ", end = "") for rep in range(0, 2 * Repeat - 1): print("*", end = "") else: for Rpt in range(0, -(N - Repeat)): print(" ", end = "") for rpt in range(1, 2 * N - minus): print("*", end = "") minus += 2 print("")