본문 바로가기

개발일지/TIL

TIL 23-04-04

https://github.com/sdoram/Algorithm

 

1. 프로그래머스 LV2 - 최솟값 만들기 

 문제점

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 
이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 
이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. 
(단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)


    # A, B = 자연수
    # A와B 에서 각각 하나씩 뽑아서 곱하는 걸 누적
    # 누적 결과값을 최소로 만들기
    # 그럼 A의 최댓값과 B의 최솟값을 곱하는 형식으로 만들어야 할 듯 sort와 reverse사용

문제점 1 A,B를 같이 for문을 돌릴 방법 dictionary사용
 리스트를 풀어서 문자열로 바꾸고 슬라이싱을 0.-1부터로 시작 for문을 len만큼 돌리기

 시도해 본 것들

def solution(A,B):
    A.sort()
    B.sort(reverse=True)
    
    for i in A:
        A_num = A.pop()
        B_num = B.pop()
        print(A_num,B_num)
        answer += A_num * B_num

마지막 1개가 pop()이 안됨

 

for i in range(1,(len(A)+1)):

range를 통해서 수정 

 

 해결 방법

def solution(A,B):
    answer = 0
    # 정렬, 최솟값 구할 준비 
    A.sort()
    B.sort(reverse=True)
    
    for i in range(1,(len(A)+1)):
        A_num = A.pop()
        B_num = B.pop()
        # A와B 에서 각각 하나씩 뽑아서 곱하는걸 누적
        answer += A_num * B_num

 return answer

 알게 된 점

for i in range(1,(len(A)+1)):

이라는 list의 길이로 for문을 작동하는 코드 구조에 익숙해졌다. 

주석으로 풀이 방향을 풀어쓰고 기본적인 작성법에 익숙해지면서 편집기 없이도 어려움 없이 해결할 수 있었다.

 

1. 프로그래머스 LV1 - 자연수 뒤집어 배열로 만들기

 문제점

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

# n은 자연수
# pop(), slice() 사용

 시도해 본 것들

def solution(n):
    # n은 자연수
    # pop(), slice()
    answer = 0
    for i in range(1,n+1):
        print(i)
    
    return answer

n은 int여서 for문이 글자수가 아니라 적혀있는 숫자 기준으로 작동

 

n = str(n)
n = list(n)

n을 형변환하기
 int를 바로 list로 형 변환 시 에러 발생

 해결 방법

def solution(n):
    # n은 자연수
    # pop(), slice()
    answer = []
    # n 형변환
    n = str(n)
    n = list(n)

    # for문의 범위를 설정하는데 성공했는데 헷갈린다.
    for i in range(1, (len(n)+1)):
        num = n.pop()
        answer.append(int(num))

    return answe

 알게 된 점

for i in range(1,(len(A)+1)):

리스트로 바꾸면서 for문의 범위 설정을 위의 코드를 바로 참고해서 썼는데 조금만 조건이 추가돼도 범위 설정에서 애를 먹는 것을 보면 각 자료형의 특징을 잘 사용하지 못하는 것 같다.

 

 

'개발일지 > TIL' 카테고리의 다른 글

TIL 23-04-06  (0) 2023.04.06
TIL 23-04-05  (0) 2023.04.05
TIL 23-04-03  (2) 2023.04.03
TIL 23-04-02  (0) 2023.04.02
TIL 23-04-01  (0) 2023.04.01