STUDY/Python

프로그래머스 코딩테스트 입문 파이썬 lv.0 (11)

둥둥런 2023. 4. 14. 14:50

프로그래머스 파이썬 레벨0 풀이

한 번만 등장한 문자

https://school.programmers.co.kr/learn/courses/30/lessons/120896

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(s):
    answer = ''
    for i in s:
        if s.count(i) == 1:
            answer = answer + i
    return ''.join(sorted(answer))

참고사항

문자열도 sort가 된다. -> 리스트로 바뀌므로 join 필요

 

참고 블로그: https://velog.io/@jeeho102/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Lv0%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%93%B1%EC%9E%A5%ED%95%9C-%EB%AC%B8%EC%9E%90%ED%8C%8C%EC%9D%B4%EC%8D%AC


컨트롤 제트

https://school.programmers.co.kr/learn/courses/30/lessons/120853?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(s):
    stack = []
    for outa in s.split():
        if outa != 'Z':
            stack.append(outa)
        else:
            stack.pop()
    return sum(list(map(int, stack)))

 

- 가장 마지막에 들어온 숫자가 Z를 만나면 가장 먼저 빠져나가므로 stack을 활용했다.

- s가 리스트가 아니라 공백으로 구분된 문자열이라 s.split()으로 나눠주었다.

- stack에 담겨있는 값이 문자열이라 list(map(int, 변환할리스트))를 통해 정수형으로 바꿔주었다.

 

 

소인수분해

https://school.programmers.co.kr/learn/courses/30/lessons/120852

def solution(n):
    answer = []
    i = 2
    while i <= n:
        if n % i == 0: 
            answer.append(i)
            n = n // i
        else:
            i += 1
            
    return sorted(list(set(answer)))

- 소인수를 구하는 부분은 고민하다가 다른 분의 풀이를 참고했다. while문 조건 활용

- 마지막으로 중복제거는 list(set(리스트))를 활용했고, sorted()f로 감싸서 오름차순으로 정렬해주었다.

 

참고 블로그:

https://velog.io/@zinu/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

공 던지기

https://school.programmers.co.kr/learn/courses/30/lessons/120843

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

7의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120912

def solution(array):
    cnt = []
    for i in list(map(str,array)):
        cnt.append(i.count('7'))
        
    return sum(cnt)

- 숫자 그대로를 셀때는 문자열로 바꿔주면 된다.

- list(map(str, 리스트))로 문자열로 바꿔주기.... str(리스트)도 된다고 함......

# 더 간단한 다른 사람의 풀이
def solution(array):
    return str(array).count('7')

 

영어가 싫어요

아직 딕셔너리가 익숙하지 않아서 여러 방법 중 딕셔너리를 활용해서 풀어보았다.

def solution(numbers):
    num_dict = {"zero":'0', "one":'1', "two":'2', "three":'3', "four":'4', "five":'5', "six":'6', "seven":'7', "eight":'8', "nine":'9'}
    for key in num_dict.keys():
        numbers = numbers.replace(key, num_dict[key])
    return int(numbers)

참고한 블로그: https://velog.io/@jeeho102/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Lv0%EC%98%81%EC%96%B4%EA%B0%80-%EC%8B%AB%EC%96%B4%EC%9A%94%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

프로그래머스_Lv0_영어가 싫어요_파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/120894dict를 활용해서 dict = { "zero" : 0, \~\~~} 식으로 넣어주고 값을 하나씩 key값과 같은 경우 value값을 넣어주면서

velog.io

딕셔너리에서 key->value Replace는 자주 쓸 것 같으니 알아둬야겠다.

for key in 딕셔너리.keys():

    리스트 = 리스트.replace(key, 딕셔너리[key])