코딩테스트 연습 - 수박수박수박수박수박수? | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
입출력 예
n | return |
3 | "수박수" |
4 | "수박수박" |
풀이
아이디어: n이 짝수일때와 홀수일때를 나눠서 "수박"에 몫 곱하고 나머지 더하기
def solution(n):
if n%2 == 0:
num = n//2
answer = '수박'*num
return answer
else:
num = n//2
answer = '수박'*num+'수'
return answer
나의 비루한 풀이..
다른 효율적인 코드들을 살펴보자.
def water_melon(n):
str = "수박"*n
return str[:n]
-> 문자열의 인덱싱을 이용한 풀이
n을 그대로 곱해주는게 쓸데 없는 메모리를 차지할수도 있지만, 간단하게 풀기에는 좋아보인다.
(n//2+1 로 대체해서 곱해주면 메모리 효율적으로 사용 가능)
def water_melon(n):
return "수박" * (n//2) + "수" * (n%2)
내가 생각했던 아이디어를 간단하게 적는다면 이렇게 되는구나
(같은 생각 다른 코드....ㅎㅎ)
def solution(n):
return "".join(["수박"[i%2] for i in range(n)])
-> range(n) (0부터 n-1까지) 범위의 i를 2로 나눈 나머지(0 or 1)로 "수박"에서 인덱싱을 n만큼 반복. 그리고 join으로 문자열을 합쳐준 풀이
그동안 프로그래머스에 "다른 사람의 풀이"를 보는 탭이 있는걸 몰라서 "질문하기"에서 다른 풀이 참고해서 공부했었다,,,
저런 좋은게 있었네..
이제 문제 풀고 다른 효율적인 풀이는 뭐가 있는지 여러 코드를 보면서 공부해야겠다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.1] 약수의 개수와 덧셈 (Python) (0) | 2024.07.10 |
---|---|
[프로그래머스 Lv.1] 내적 (Python) (0) | 2024.07.10 |
[프로그래머스 Lv.1] 없는 숫자 더하기 (Python) (0) | 2024.07.09 |
[프로그래머스 Lv.1] 음양 더하기 (Python) (0) | 2024.07.09 |
[프로그래머스 Lv.1] 나누어 떨어지는 숫자 배열 (Python) (0) | 2024.07.09 |