[프로그래머스 / Level 2] 최솟값 만들기 (파이썬)

2022. 5. 3. 09:32·🎲 알고리즘 공부/프로그래머스

📝 문제

> 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.

배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.

 

예시

 

https://programmers.co.kr/learn/courses/30/lessons/12941​

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

 

 

🎨 풀이

💡 첫 번째 시도 = 성공

 

def solution(A,B):
    answer = 0
    A.sort()
    B.sort(reverse=True)

    for i in range(len(A)):
        answer += A[i] * B[i]
            
    return answer

> 핵심 : 가장 큰 수 끼리 곱해지는 불상사가 없도록 정렬을 다르게 해준 후 차례대로 곱한다.

 

1. A는 오름차순으로, B는 내림차순으로 정렬한다.

2. A[i] 와 B[i] 를 곱해준 후 answer에 넣는다.

 - A[i]와 B[i]의 길이가 같다고 했으니 len(A)를 적어주면 된다.

 

* 오름차순, 내림차순으로 정렬하지 않았을 때와 비교

 - A = [1,7,2] B=[2,3,6] 가 있을 때,

  - 정렬 안 했을 때 : 2 + 21 + 12 = 35

  - 정렬했을 때 : 6 + 6 + 14  = 26 // A = [1,2,7] B = [6,3,2]

  - 둘다 오름차순으로 통일했을 때 : 2 + 6 + 42 = 50 // A = [1,2,7] B = [2,3,6]

=> answer이 최대로 나오고 싶으면 둘 다 오름차순이나 내림차순으로 통일해서 정렬한 후 곱하면 된다.

 (큰 수들 모이게 하면 몰아주는 느낌이 나서 수가 엄청 커짐)

​끝~

 

 

⭐ 느낀점

 

> LEVEL 2인거 치고는 그래도 해볼만한,,, 그런 느낌~ ㅎㅎ. 아마 프로그래머스 2를 다 풀기에는 실력이 부족하니 백준으로 한 번 더 공부를 하지 않을까 싶당 ㅎㅎ. 화이팅!!!!!!!!!!!!

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 문자열 다루기 기본 (파이썬)  (0) 2022.05.05
[프로그래머스 / Level 2] 전화번호 목록 (파이썬)  (0) 2022.05.04
[프로그래머스 / Level 2] 최댓값과 최솟값 (파이썬)  (0) 2022.05.02
[프로그래머스 / Level 1] 이상한 문자 만들기 (파이썬)  (0) 2022.05.01
[프로그래머스 / Level 1] 약수의 합 (파이썬)  (0) 2022.04.30
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 문자열 다루기 기본 (파이썬)
  • [프로그래머스 / Level 2] 전화번호 목록 (파이썬)
  • [프로그래머스 / Level 2] 최댓값과 최솟값 (파이썬)
  • [프로그래머스 / Level 1] 이상한 문자 만들기 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    신입일기
    50문답
    피보나치수
    nodejs
    정보처리기사
    폰켓몬
    오버워치
    codeup
    오블완
    일기
    카카오
    프로그래머스
    행렬덧셈
    스프링부트
    백준
    코드업
    스프링 부트
    6월 목표
    파이썬
    코민이
    충무로
    코린이
    BOJ
    찬양추천
    티스토리챌린지
    til
    연습문제
    정처기
    코테
    컨텐더스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 2] 최솟값 만들기 (파이썬)
상단으로

티스토리툴바