나는 이렇게 학습한다/Algorithm & SQL

수박수박수박수박수박수?

daco2020 2022. 1. 29. 00:26
반응형

문제 설명

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

 

 

제한 사항

n은 길이 10,000이하인 자연수입니다.

 

 

해결 방법

1. n을 2로 나누고 '수박'을 곱한다.

2. n이 2로 나누어 떨어지는지 불린 값으로 확인한다.

3. 딕셔너리를 활용해 불린 키에 해당하는 값을 찾는다.

4. True일 경우 2로 나누어 떨어지므로 '수박'을 곱한 문자열을 그대로 반환한다.

5. False일 경우 나머지가 1이 남은므로 '수박'을 곱한 문자열에 '수'을 덧붙여 반환한다.

 

def solution(n):
    text = n // 2 * '수박'
    
    bool_dict = {
        True : text,
        False : text + '수'
    }
    
    answer = bool_dict[n % 2 == 0]
    return answer

 

for 나 if 로 풀 수도 있었지만 딕셔너리 자료구조를 활용하여 풀어보고 싶었다.

 

 

 

 

사실 굳이 딕셔너리를 사용하지 않고도 더 간결하게 풀 수도 있다.

def water_melon(n):
    return "수박"*(n//2) + "수"*(n%2)

 

 

 

 

또 다르게는 슬라이싱을 활용하는 방법이 있는데 이는 n의 두배길이만큼 만든 후 슬라이싱한다는 점에서 위에 코드보다는 비효율적으로 보인다.

def water_melon(n):
    return (n*'수박')[:n]

 

 

 

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

반응형

'나는 이렇게 학습한다 > Algorithm & SQL' 카테고리의 다른 글

문자열 다루기 기본  (0) 2022.01.31
서울에서 김서방 찾기  (0) 2022.01.30
시저 암호  (0) 2022.01.27
약수의 합  (0) 2022.01.26
이상한 문자 만들기  (0) 2022.01.25