본문 바로가기
Programming/Python

[프로그래머스 Python] 가운데 글자 가져오기, 콜라츠 추측, 문자열 내림차순 배치하기

by 용스토리랜드 2024. 7. 3.

가운데 글자 가져오기

 <문제 설명>  단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

✅ <입출력 예시>

 <문제 풀이> 

  • 문자열의 길이가 <홀수>일 경우 문자열 길이를 2로 나눠준 이 가운데 숫자인 것을 확인
  • 따라서 2로 나눈 몫을 인덱스로 활용하여 가운데 문자 return
  • 문자열의 길이가 <짝수>일 경우 문자열 길이를 2로 나눠준 이 가운데 2개의 숫자 중 뒤쪽에 배치된 수인 것을 확인
  •  따라서, 2로 나눈 몫을 구해준 뒤 [idx-1:idx+1] 형태로 슬라이싱 해서 return
def solution(s):
    if len(s) % 2 != 0 : 
        idx = len(s) // 2
        return s[idx]
    else : 
        idx = len(s)//2
        return s[idx-1:idx+1]

콜라츠 추측

 <문제 설명> 

1-1. 입력된 수가 짝수라면 2로 나눕니다. 

1-2. 입력된 수가 음수라면 3을 곱하고 1을 더합니다. 

2. 결과로 나온 수는 같은 작업을 1이 될 때까지 반복합니다.

---

예를 들어, 주어진 수가 6이라면, 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution 을 완성해주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 -1을 반환

 

✅ <입출력 예시>

 <문제 풀이> 

def solution(num):
    answer = 0
    
    # 주어진 수가 1인 경우 0 return
    if num == 1:
        return 0
    
    while True:
        num = num/2 if num % 2 == 0 else (num*3)+1
        answer += 1
        # num 이 1이 되거나 answer 가 500이 넘어가면 멈추기
        if num == 1:
            return answer 
        elif answer == 500:
            return -1
    
    return answer

 

 


문자열 내림차순 배치하기

✅ <문제 설명> 

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

✅ <입출력 예시> 

 <문제 풀이> 

  • 리스트 컴프리헨션(쉽게, 짧게 한 줄로 만들 수 있는 파이썬의 문법)
  • 문자열을 한 문자씩 리스트에 담는다. 'abcde' -> [a, b, c, d, e] (따옴표 생략)
  • 리스트.sort(reverse = True) 를 해주면 소문자부터 내림차순 -> 대문자 내림차순을 진행해준다. 
  • 이렇게 정렬된 리스트를 (구분자).join(리스트) 함수를 적용해 다시 하나의 문자열로 합쳐준다.
def solution(s):
    
    ls = [e for e in s]
    ls.sort(reverse = True)
    answer = ''.join(ls)

    return answer

 

 

반응형