본문 바로가기

프로그래머스

(4)
풍선 터트리기 def solution(a): left_min = float('inf') right_min = float('inf') answer =set() for left,right in zip(a,reversed(a)): if left 코드 설명초기화left_min과 right_min은 각각 양쪽 끝에서 현재까지 탐색한 최소값을 저장합니다. answer는 set 자료형으로 중복된 요소를 방지합니다.반복문zip(a, reversed(a))를 사용하여 a 배열의 양쪽 끝에서 시작하는 두 개의 포인터(left와 right)를 동시에 탐색합니다.조건문left 요소가 현재 left_min보다 작을 경우, left_min을 갱신하고 answer 집합에 추가합니다.right 요소가 현재 rig..
2024 KAKAO WINTER INTERNSHIP 주사위 고르기 A와 B가 n개의 주사위를 가지고 승부를 합니다. 주사위의 6개 면에 각각 하나의 수가 쓰여 있으며, 주사위를 던졌을 때 각 면이 나올 확률은 동일합니다. 각 주사위는 1 ~ n의 번호를 가지고 있으며, 주사위에 쓰인 수의 구성은 모두 다릅니다.A가 먼저 n / 2개의 주사위를 가져가면 B가 남은 n / 2개의 주사위를 가져갑니다. 각각 가져간 주사위를 모두 굴린 뒤, 나온 수들을 모두 합해 점수를 계산합니다. 점수가 더 큰 쪽이 승리하며, 점수가 같다면 무승부입니다.A는 자신이 승리할 확률이 가장 높아지도록 주사위를 가져가려 합니다.다음은 n = 4인 예시입니다.주사위구성#1[1, 2, 3, 4, 5, 6]#2[3, 3, 3, 3, 4, 4]#3[1, 3, 3, 4, 4, 4]#4[1, 1, 4, 4,..
수식 복원하기 문제 설명당신은 덧셈 혹은 뺄셈 수식이 여러 개 적힌 고대 문명의 유물을 찾았습니다. 이 수식들을 관찰하던 당신은 이 문명이 사용하던 진법 체계가 10진법이 아니라는 것을 알아냈습니다. (2 ~ 9진법 중 하나입니다.)수식들 중 몇 개의 수식은 결괏값이 지워져 있으며, 당신은 이 문명이 사용하던 진법에 맞도록 지워진 결괏값을 채워 넣으려 합니다.다음은 그 예시입니다.14 + 3 = 1713 - 6 = X51 - 5 = 44 해당 문제는 몇가지 주요 단계로 나누어서 해결했습니다.진수 변환: 산술 연산을 수행하려면 진수 간에 숫자를 변환해야 합니다.평가: 각 표현식에 대해 결과를 직접 계산할 수 있는지 또는 알 수 없는 사항을 알아내야 하는지 결정합니다.결과 형식화: 마지막으로 지정된 출력 요구 사항에 따라..
다단계 칫솔 판매 다단계 판매 조직에서는 수익이 판매자뿐만 아니라 추천인에게도 분배됩니다. 이렇게 분배되는 구조를 코딩으로 해결하는 것은 꽤 흥미로운 문제입니다. 이번 포스팅에서는 Python으로 간단히 다단계 수익 분배 알고리즘을 구현하는 방법을 살펴보겠습니다.문제 설명enroll: 각 판매자의 이름 목록입니다.referral: 각 판매자가 가입 시 추천한 추천인의 이름 목록입니다. 추천인이 없는 경우 '-'로 표시됩니다.seller: 이번에 판매를 발생시킨 판매자 이름 목록입니다.amount: seller와 일대일로 매칭되는 판매량 목록입니다.판매자의 수익에서 10%는 상위 추천인에게 전달되고, 90%만 자신에게 남습니다. 추천인이 계속 연결된 경우, 10%를 상위 추천인에게 전달하는 것을 반복합니다. 아래 코드는 이..