KS_History
문제 리뷰하기 본문
문제 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 |