티스토리 뷰

푼 문제들

 

 

 

코드 처리하기

 

 

정답

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함