본문 바로가기
Algorithm/프로그래머스(Programmers)

[ 파이썬(python) ] 프로그래머스 level1 - 수박수박수

by YWTechIT 2021. 3. 31.
728x90

📌 수박수박수

길이가 n인 '수박수박수...'와 같은 패턴을 갖고있는 문자열을 리턴하는 함수를 만드는 문제다.

정답판정을 받고 다른 사람의 풀이를 보니까 리스트 슬라이싱을 이용해 쉽게 풀었던 코드를 봤다. 나중에 써먹자.


💡 나의 풀이

수박수박수..와 같은 패턴을 띄는 문자열을 빈 리스트에 선언했다.
n의 길이가 10,000이하의 자연수이므로 범위를 fruit = [0] * 10001로 설정했다.

다음으로 홀수번째는 , 짝수번째는 이라는 패턴을 찾아냈다.
그래서 fruit리스트에 패턴을 넣어줬다.

그리고 n번만큼 리스트를 출력해 문자열(str)로 바꿔주었다.

def solution(n):
    fruit = [0] * 10001
    fruit = ['수' if i % 2 == 0 else '박' for i in range(len(fruit))]
    return ''.join([fruit[i] for i in range(n)])

💡 다른 코드

리스트 슬라이싱을 이용해 코드를 작성했지만, 개인적으로 범위를 다시 설정했으면 더 좋은 코드가 됐을것 같다.

n=3이면 s = 수박수박수박이 될텐데 출력은 수박수까지만 필요하다.
따라서, 범위 설정을 (n//2+1)로 해주면 s = 수박수박이 되므로 기존코드보다 메모리면에서 더 효율적이다.

# 다른사람의 풀이
def solution(n):
	s = '수박' * n
    return s[:n]

# 다른사람의 풀이 수정코드
def solution(n):
    s = '수박' * (n//2+1)
    return s[:n]
반응형

댓글