프로그래머스 파이썬 레벨0 풀이
한 번만 등장한 문자
https://school.programmers.co.kr/learn/courses/30/lessons/120896
def solution(s):
answer = ''
for i in s:
if s.count(i) == 1:
answer = answer + i
return ''.join(sorted(answer))
참고사항
문자열도 sort가 된다. -> 리스트로 바뀌므로 join 필요
컨트롤 제트
https://school.programmers.co.kr/learn/courses/30/lessons/120853?language=python3
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://school.programmers.co.kr/learn/courses/30/lessons/120843
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)
딕셔너리에서 key->value Replace는 자주 쓸 것 같으니 알아둬야겠다.
for key in 딕셔너리.keys():
리스트 = 리스트.replace(key, 딕셔너리[key])