KS_History

문제 리뷰하기 본문

History/Python Coding

문제 리뷰하기

kstar2 2026. 1. 20. 15:17

문제 1 & 내가 푼 코드

- 시간 복잡도 O(n^2)

- babbling에서 문자열을 받아와서 해당 문자열이 4가지 발음중 해당하는게 있는지 while문을 통해 확인하고
  해당 문자열이 모두 4가지 발음에 해당하는 것으로만 이뤄졌다면 cnt 하도록함

 

문제 2 & 내가 푼 코드

- 조건상 띄어쓰기 있는 상태로 수식이 들어오니 split하여 저장함

- a + b나 a - b나 이런 식으로 들어오는 데 첫 값은 무조건 숫자니 return할 값에 더함

- 그 후 홀수 번째에는 연산자 기호로 되어 있어 2 step 씩 넘어가며 계산해 return 값을 for문을 통해 구함

 

문제 3 & 내가 푼 코드 & 개선한 코드

- 문제 2와 유사한 방식으로 수행함

- 단, O/X를 판단하는데 중복된 로직이 있음

- 따라서 아래와 같이 개선 가능함

def solution(quiz):
    answer = []
    ops = {
        "+": lambda a, b: a + b,
        "-": lambda a, b: a - b
    }

    for q in quiz:
        x, op, y, _, z = q.split()
        x, y, z = int(x), int(y), int(z)

        answer.append("O" if ops[op](x, y) == z else "X")

    return answer

- dict을 이용해 연산자에 따라 lambda 함수가 동작하도록함

 

문제 4 & 내가 푼 코드 & 개선한 코드

- if start == -1: 은 처음 숫자가 나왔을 때 index 값을 기록

- if start == len(my_string)-1:은 끝지점만 숫자인 경우를 처리하기 위함

- elif i == len(my_string)-1: 은 끝지점까지 숫자인 경우를 처리하기 위함

- if start != -1: 은 숫자가 나오다 문자로 변경되었을때 지금까지 나온 숫자를 더해주기 위함

- 중복된 역할이 있어 개선하면 아래와 같음

def solution(my_string):
    total = 0
    num = ""

    for ch in my_string:
        if ch.isdigit():
            num += ch
        else:
            if num:
                total += int(num)
                num = ""

    if num:
        total += int(num)

    return total

- index를 기록하던 방식 말고 숫자인것들을 따로 빼다가 문자가 나왔을 떄 더하고

- for문 끝난후에 num != ''이면 끝까지 숫자인게 있는거 니까 처리할 수 있게 개선함

- 불필요한 if 문을 줄이는 코딩을 해야함

 

문제 5 & 내가 푼 풀이

- 문자열을 list화해서 각 글자로 나눠지도록함

- 해당 index값 끼리 위치를 바뀌고 join을 통해 다시 합쳐 return 함

 

문제 6 & 내가 푼 풀이 & 개선한 코드

- 오른쪽으로 한칸 씩 밀도록 for문을 통해 수행하지만 처음부터 같은 경우를 if문으로 처리함

- 그외 경우는 else를 slice 한게 같은지 확인하여 return하고

- 한 바퀴를 돌았지만 같은 경우가 없으면 -1을 return하도록함

- for문 안쓰고도 아래와 같이 해결 가능함

def solution(A, B):
    if B in A + A:
        return (A + A).index(B)
    return -1

'History > Python Coding' 카테고리의 다른 글

이것저것 공부 기록  (0) 2026.01.19
이것저것 공부기록  (0) 2026.01.08
이것저것 공부기록  (0) 2025.12.11
function과 이것저것 공부 기록  (0) 2025.12.08