25. 06. 09 공부일지

behumble·2025년 6월 10일

공부일지

목록 보기
20/20

모든 문제에 대한 내용을 적고 싶었으나, 앞으로는 새롭게 알게 된 내용의 코드만 벨로그에 적기로 했다.

회고

문제마다 다양한 접근법을 시도하며, 슬라이싱과 반복문 등 파이썬의 기본기를 확실히 다질 수 있었다. gpt의 더 간결한 풀이도 참고하며 코드 효율성을 고민하게 되었다. 문제 해석과 로직 설계의 중요성을 다시 한 번 느낀 시간이었다.


Keywords

✅ 효율적 문제 풀이 방법 연구
✅ isalpha(), isdigit(), isalnum()
✅ 패턴을 파악하여 문제 풀기


programmers

정수 제곱근 판별

def solution(num):
    num_sqrt = num ** 0.5
    if num_sqrt.is_integer():
        return (num_sqrt + 1) ** 2
    else:
        return -1
  • isalpha() : 문자열이 알파벳만 이루어져 있는지 확인
  • isdigit() : 문자얼이 숫자로만 이루어져 있는지 확인
  • isalnum() : 무자열이 알파벳 또는 숫자로만 이루어져 있는지 확인
  • 아래 참고용 사진

서울에서 김서방 찾기

def solution(seoul):
    for w in range(0,len(seoul)):
        if seoul[w] == "Kim":
            return (f"김서방은 {seoul.index('Kim')}에 있다")
  • 문자열 포매팅을 하는 과정에서 "를 잘못닫는 실수를 했다. vscode는 항상 알려줬기에 몰랐는데 programmers 사이트를 쓰면서 이런 실수가 자주 나오는 것 같다. 사실 내가 적어야하는게 맞는건데... 정신차리자

수박수박수박수?

def solution(n):
    pattern = "수박"
    result = (pattern * ((n + 1) // 2))[:n]
    return result
  • 이 문제를 처음 봤을 때 대체 어떻게 풀어야하는지 감이 안왔다. 결국 혼자 풀지못하고 gpt를 참고하였다. 패턴을 파악하고 그 패턴을 활용한 풀이법이다.
    문제를 해결하는 방법에 있어서의 고민을 더 해보는 것이 좋겠다.

행렬의 덧셈

def solution(arr1, arr2):
    result = []
    for i in range(len(arr1)):
        row = []
        for j in range(len(arr1[0])):
            row.append(arr1[i][j] + arr2[i][j])
        result.append(row)
    return result
  • 행렬에 대해 생각을 하면서 문제풀이가 꼬였다. 왜 대체 이런문제가 나오면 항상 긴장하는지 모르겠다. 풀고 나면 별거 아닌데..

접미사

def solution(my_string, is_suffix):
    suffix_list = []
    for i in range(len(my_string)):
        suffix = my_string[i:]
        suffix_list.append(suffix)
    if is_suffix in suffix_list:
        return 1
    else:
        return 0
  • 접미사를 어떻게 확인할건지에 대해서 고민을 많이했다. 결국 선택한 방법은 슬라이싱이고 for 문을 통해 suffix_list를 만들어 if문으로 비교했다.

홀짝에 따라 다른 값 반환하기

def solution(n):
    odd_list = []
    even_list = []
    if n % 2 != 0:
        for i in range(1, n+1, 2):
            odd_list.append(i)
        return sum(odd_list)
    else:
        for i in range(0, n+1, 2):
            even_list.append(i)
        evendoublesum = 0
        for num in even_list:
            evendoublesum = evendoublesum + (num ** 2)
        return evendoublesum
  • 지금 다시보면서 생각해봐도 너무 복잡하고 쓸데없이 길게 푼 것 같다. if와 for문을 잘 활용하긴 했지만 좋은 풀이라고는 생각되지 않는다
  • 아래는 gpt의 풀이인데... 전혀 생각못했던 풀이이다. 더 간단하고 효율적으로 푸는 방법을 연구해야겠다.
    def solution(n):
        total = 0
        if n % 2 == 0:
            for i in range(0, n + 1, 2):
                total += i ** 2
        else:
            for i in range(1, n + 1, 2):
                total += i
        return total

커피 심부름

def solution(order):
    result = 0
    for menu in order:
        if "ame" in menu:
            result += 4500
        if "any" in menu:
            result += 4500
        if "latte" in menu:
            result += 5000
    return result
  • 문제가 장황하게 길어서 해석하는데 오래 걸렸지만 결국 문자열에 해당문자가 들어가냐는 포인트를 잘찝었다. 개인적으로 맘에 드는 풀이이다.

0개의 댓글