본문 바로가기

알고리즘풀이/프로그래머스

[9/30] Lv1.

👉 사용 언어 : PYTHON3

행렬의 덧셈

✅ Solution

 

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        list = []
        for j in range(len(arr1[i])):
            list.append(arr1[i][j]+arr2[i][j])
        answer.append(list)
    return answer

 

👉 반복문과 리스트 변수 2개를 사용하여 풀이함.

 

✅ 다른 사람 풀이 참고

 

def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
    return answer

 

👉 list( ) : 리스트로 형변환

👉 zip( ) : 여러 개의 iterable 자료형이 개수가 동일할 때 사용한다.

( interable자료형은 리스트, 튜플 같이 반복 가능한 자료형을 의미한다. )

( 요소 개수가 같은 3개의 리스트가 있는 경우, 왼쪽부터 슬라이스 하듯 각 리스트에서 인덱스 위치 순서가 동일한 요소끼리 나눈 후 묶어주는 것 )

( zip 타입으로 출력되므로 리스트 / 딕셔너리 / - 의 자료형으로 형변환해주어야 한다. )

👉 unzip( ) : zip( )으로 묶어 놓았던 것을 다시 해제한다.

예산

✅ Solution

 

def solution(d, budget):
    answer = 0
    for i in sorted(d):
        if budget-i >= 0:
            budget = budget-i
            answer = answer+1
    return answer

 

👉 정렬함수 sorted( )와 for 반복문, if 조건문을 사용하여 풀이함.

👉 예산을 오름차순으로 정렬 후, 하나씩 뺴주다가 모자르면 멈추도록 해야 최대한 많은 부서에 지원금을 지급할 수 있다.

 

✅ 다른 사람 풀이 참고

 

def solution(d, budget):
    d.sort()
    while budget < sum(d):
        d.pop()
    return len(d)

 

👉 정렬하는 부분은 동일하나, while 반복문을 사용하여 if 조건문을 따로 빼지 않았다.

컨트롤 제트

✅ Solution

 

def solution(s):
    answer = 0
    list = s.split()
    for i in range(len(list)):
        if list[i] == 'Z':
            answer = answer-(int(list[i-1]))
        else:
            answer = answer+int(list[i])
    return answer

 

✅ 다른 사람 풀이 참고

 

def solution(s):
    answer = 0
    for i in range(len(s := s.split(" "))):
        answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
    return answer

 

✅ split( )

👉 문자열을 공백 또는 특정한 문자(열) 기준으로 나누어 리스트를 만들 때 사용한다.

( Cf. spilt( )과 정확히 반대의 기능을 수행하는 메서드는 join( ) 으로, 리스트의 원소들을 하나의 문자열로 합쳐 주는 메서드이다. )

 

1) 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나눠 리스트로 만들기

 

리스트명(문자열객체).split()

 

2) 특정한 문자(':' 등)를 기준으로 문자열을 분할하여 리스트로 만들기

 

리스트명(문자열객체).split('특정문자')

A로 B 만들기

✅ Solution

 

def solution(before, after):
    return int(sorted(before)==sorted(after))

 

✅ sorted( )

👉 길이가 동일한 두 문자열을 비교하는 경우로, 순서 상관없이 동일한 문자가 들어있는지만 확인하는 것이기 때문에 복잡하게 생각하지 않고 두 문자열 모두 정렬한 다음 순서대로 비교하면 쉽게 문제를 해결할 수 있다.

'알고리즘풀이 > 프로그래머스' 카테고리의 다른 글

[11/16] Lv1.  (0) 2023.11.10
[11/8] Lv1.  (0) 2023.11.04
[10/31] Lv1.  (0) 2023.11.01
[10/22] Lv1.  (0) 2023.10.19
[9/21] Lv1.  (0) 2023.09.15