[TIL] 23.02.24

문종현·2023년 2월 24일
0

TIL

목록 보기
88/119

👉 오늘 한 일

  • 프로그래머스 문제풀이(level 1)

프로그래머스 문제풀이

1. 문자열 다루기 기본

  • lv 1, 정답률 79%
  • str.isnumeric 은 문자열 형태로 된 숫자를 받아도 True를 반환함
def solution(s):
    return True if (len(s) == 4 or len(s) == 6) and s.isnumeric() else False
  • 다른 사람 풀이
    • isdigit 을 사용할 수도 있음. in 을 활용하면 or 을 쓰는 것보다 편리하게 조건을 찾을 수 있음
def alpha_string46(s):
    return s.isdigit() and len(s) in [4,6]

2. 행렬의 덧셈 📌

  • 프로그래머스 lv 1, 행렬의 덧셈
  • lv 1, 정답률 78%, try 2
  • 처음에 푼 풀이
    • 같은 위치에 있는 요소끼리 더해서 하나의 리스트를 만든 후 리스트를 두 개로 나누었음
    • 열의 길이를 생각하지 못하고 푼 풀이였음..! 이 풀이는 열의 길이가 2일 때만 작동함
def solution(arr1, arr2):
    result = []
    for a1, a2 in zip(arr1, arr2):
        for i1, i2 in zip(a1, a2):
            result.append(i1+i2)
    return result[0:len(arr1[0])], result[-len(arr1[0]):]
  • 다른 사람 풀이
    • 이중 for문으로 각각의 요소들을 더해준뒤, 리스트에 append
def solution(arr1, arr2):
    answer = []
    
    for i in range(len(arr1)):
        arr_sum = []
        for j in range(len(arr1[0])):
            arr_sum.append(arr1[i][j] + arr2[i][j])
        answer.append(arr_sum)
            
    return answer
  • 좋은 풀이들
# 1. 이중 for문 리스트 컴프리헨션
def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
    return answer
    
# 2. 언패킹 후 zip으로 같은 위치의 요소들끼리 묶고 map을 사용해 더해줌
def sumMatrix(A,B):
    return [list(map(sum, zip(*x))) for x in zip(A, B)]
profile
자라나라 새싹새싹🌱

0개의 댓글