코딩테스트 (Coding Test)

[프로그래머스] Lv1 문제풀이

zzoming 2023. 10. 9. 03:47

1. 추억점수 

 

💡dict 함수와 zip을 사용해 쉽게 풀이할 수 있다.

아래 코드는 key를 name, value를 yearning으로 하여 딕셔너리를 생성했다. 

name = ["may", "kein", "kain", "radi"]
yearning = [5, 10, 1, 3]

dictionary = dict(zip(name,yearning))

 

2. 가운데 글자 가져오기 

 

💡리스트 slicing에 관한 개념이 필요하다.

list[start:end+1] 로 원하는 위치에 있는 것을 가져올 수 있다

a= ['a','b','c','d','e']
a[2:4]

#실행결과
['b','c'] 

#인덱스를 1~3까지 값을 거꾸로 가져오기 
a[3:0:-1]

#실행결과
['d','c','b']

3. 수박수박수박수박수박수?

💡짝수일 경우 '수박' * n//2 만큼, 홀수일경우 '수' + '박수' * n//2 만큼 반복한다고 생각하여 풀이했다.

 

if

1일 경우 수 

3일경우 수박수   수 + 박수 

5일경우 수박수박수   수 + 박수박수

7일경우 수박수박수박수   수 + 박수박수박수

def solution(n):
    #n이 짝수 일 경우
    if n % 2 == 0 :
        answer = '수박'*(n//2)
    #n이 홀수일경우     
    else :
        answer = '수'+('박수')*(n//2)       
    return answer

4. 약수의 개수와 덧셈 

def solution(left, right):
    
    answer = 0
    
    #범위가 left부터 rigt까지 
    for i in range(left , right+1) :
        result = []
        for j in range(1,i+1) :
            if i % j  == 0 :
                result.append(i)
                
        #만일 약수의 개수가 짝수라면 더하기         
        if len(result) % 2 == 0  :
            answer += i 
        #만일 약수의 개수가 짝수라면 빼기    
        else :
            answer -= i 
            
    return answer

5. 문자열 내림차순 

 

💡정렬 함수인 sorted를 사용해서 정렬 후, join을 사용해서 리스트 내 str을 붙여서 출력함 

😂 큰 순에서 작은 순으로 정렬할 때 reverse = True 설정 ( 바보같이 ascending 쓰고 있었음..)

def solution(s):
    answer = sorted(s , reverse = True)
    return (''.join(answer))

6. 문자열 다루기 기본 

 

💡숫자.문자열 판별 함수 기억해놓기! 

 

숫자 판별 : isdigit() 

문자열 판별 : isalpha() ⇒ 공백이 있을경우 False반환 

숫자+문자열 판별 : isalnum()

 

7. 부족한 금액 계산하기 

def solution(price, money, count):
    
    sum = 0
    
    for i in range(1,count+1) :
        sum += price * i
    
    if sum > money :
        answer = abs(sum-money)
    else:
        answer = 0

    return answer

 

8. 예산 

 

💡오름차순으로 정렬 후 신청금액보다 합이 클 경우 가장 큰 금액부터 반환 

🤔 pop은 맨마지막 원소를 리턴하여 해당 원소 삭제 

def solution(d, budget):
    #오름차순정렬 
    d = sorted(d)
    #신청금액보다 클 경우 가장 큰 금액부터 반환 
    #pop은 맨마지막 원소를 리턴하여 해당 원소 삭제 
    while budget < sum(d) :
        d.pop()    
    return len(d)

 

9. 같은 숫자는 싫어 

 

💡완전탐색적방법으로 해결, 이전 숫자와 동일하지 않을 경우 원소 추가 

def solution(arr):
    answer = []
    answer.append(arr[0])
    # 이전 숫자와 동일하지 않을 경우 원소 추가 진행 
    for i in range(1,len(arr)) :
        if arr[i] != arr[i-1] :
            answer.append(arr[i])
    return answer

 

10. 숫자 문자열과 영단어 

 

💡dict 함수를 이용해 key를 문자로 value를 숫자로 매핑하여 풀기 

🤔어떻게 매핑을 해야하지 ? ⇒ replace를 이용해 해결!!

 

def solution(s):
    
    num = ['0','1','2','3','4','5','6','7','8','9']
    eng = ['zero','one','two','three','four','five','six','seven','eight','nine']
    eng_num = dict(zip(eng,num))
    
    for key in eng_num :
        s = s.replace(key , eng_num[key])   
    
    return int(s)

11. 문자열 내 마음대로 정하기 

 

💡 전에도 개념을 정리해서 기록했는데 그새 까먹음.. 복기! 

https://zzoming00.tistory.com/15

 

특정 기준으로 리스트 정렬하기 (key = lambda)

파이썬에서 배열을 정렬하기 위해서는 sorted()/sort()를 사용하여 내림차순,오름차순으로 정렬할 수 있습니다. 하지만 내가 원하는 특별한 기준으로 배열을 정렬하고 싶을 때는 key=lambda를 사용하

zzoming00.tistory.com

def solution(strings, n):
    return sorted(sorted(strings) , key = lambda x : x[n])

오늘은 여기까지..!!