티스토리 뷰
푼 문제들
코드 처리하기
정답
def solution(code):
mode = 0
ret = ""
for idx, char in enumerate(code):
if char == "1":
mode = 1 - mode
else:
if mode == 0:
if idx % 2 == 0:
ret += char
else:
if idx % 2 == 1:
ret += char
return ret if ret else "EMPTY"
문제가 길어서 꽤나 당황스러운데 기초문제여서 그렇게 어렵진 않다.
enumerate()함수를 사용하면 쉽게 풀 수 있다.
mode = 0
ret = ""
문자열 처리 방식을 정하는데 사용되는 'mode'와
처리한 문자열을 저장할 'ret'을 선언해준다.
for idx, char in enumerate(code):
idx는 0 ~ code의 길이에 해당하고
char는 code(문자열)의 요소에 해당한다.
if char == "1":
mode = 1 - mode
문자열 순회 중 char가 1에 해당한다면 mode = 1 - mode로
현재 mode가 0이면 1로 1이면 0으로 변경한다.
else:
if mode == 0:
if idx % 2 == 0:
ret += char
else:
if idx % 2 == 1:
ret += char
모드에 따라 조건문을 달리하여 문자열을 추가한다.
return ret if ret else "EMPTY"
빈 문자열('')은 불리언 컨텍스트에서 False값에 해당한다.
ret이 빈문자열이면 EMPTY를 반환하고 아니라면 ret을 반환한다.
enumerate()
for entry in enumerate(["A", "B", "C"]):
print(entry)
'''
(0, "A")
(1, "B")
(2, "C")
'''
enumerate() 함수는 컬렉션(리스트, 튜플, 문자열 등)을 순회할 때
인덱스 위치와 컬렉션의 값에 동시에 접근할 수 있게 해주는 함수이다.
등차수열의 특정한 항만 더하기
문제
정답
def solution(a, d, included):
res = 0
for i, b in enumerate(included):
if b == True:
res += a + d * i
else:
continue
return res
마찬가지로 enumerate를 이용해주면 된다.
등차수열은 초기값인 a를 가지고 공차인 d만큼 수가 일정하게 늘어나는 수열이다.
주사위 게임 2
문제
정답
def solution(a, b, c):
res = 0
if a != b and b != c and a!=c: res = a+b+c
elif a == b and b==c and a==c: res = (a + b + c) * (a**2 + b**2 + c**2 ) * (a**3 + b**3 + c**3)
else: res = (a + b + c) * (a**2 + b**2 + c**2 )
return res
하나의 조건문에 2개를 초과하는 변수가 들어가게 되면 문법오류가 난다.
대신 and나 or연산자로 이러한 조건식들을 처리할 수 있다.
if a==b or b==c or a==c: res = (a + b + c) * (a**2 + b**2 + c**2 )
세 숫자 중 어느 두 숫자는 같고 나머지 숫자는 다를 때의 조건문 처리이다.
원소들의 곱과 합
문제
정답
import math
def solution(num_list):
return 1 if math.prod(num_list) < sum(num_list) ** 2 else 0
math.prod() 메서드를 활용해 배열의 모든 원소들의 곱을 구할 수 있다.
편리하다 파이썬!
이어 붙인 수
문제
정답
def solution(num_list):
odd_str = "".join(str(num) for num in num_list if num % 2 != 0)
even_str = "".join(str(num) for num in num_list if num % 2 == 0)
return int(odd_str) + int(even_str)
리스트 컴프리헨션을 활용해 num_list에서 홀수/짝수만 모은 배열을 만들고
join을 활용해 배열의 요소를 이어붙인 문자열을 만들어 각각의 변수에 저장한다.
두 문자열 변수를 각각 int형으로 변환한 뒤 반환하면 된다.
'프로그래머스 > 파이썬' 카테고리의 다른 글
[파이썬] Day 7 반복문 (0) | 2024.05.28 |
---|---|
[파이썬] Day 6 조건문, 반복문 (0) | 2024.05.04 |
[파이썬] Day 4 연산, 조건문 (0) | 2024.04.22 |
[파이썬] Day 3 연산 (0) | 2024.04.22 |
[파이썬] Day 2 출력, 연산 (0) | 2024.04.21 |