Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 충돌위험 찾기
- CSharp #자료구조
- pccp 기출문제 2번
- 2D슈팅게임
- 양과 늑대
- 백준 c++ 9375번
- 연속 펄스 부분 수열의 합
- 9375번
- Algorithm
- 프로그래머스
- dp 알고리즘
- C#
- 유니티
- 플레이어 방향전환
- Unity
- Back Tracking
- 플레이어 이동
- Lv2
- Hp바
- pccp 기출문제 3번
- heap tree
- 미로 탈출 명령어
- dfs
- LayerMark
- Blend Type
- Lv.3
- pccp 기출문제 1번
- 오브젝트 풀링
- Ainimation Blending
- Animation State Machine
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.3 다단계 칫솔 판매 본문
https://school.programmers.co.kr/learn/courses/30/lessons/77486
1. 정답코드 및 핵심 아이디어, 유의사항
트리 형태처럼 이루어진 다단계 피라미드에서 각 멤버의 수익을 측정해 반환하는 문제
1) 수익금이 발생했을 경우 수익을 내거나 받은 나는 무조건 수익의 90%만 수익으로 측정
- 추천인이 없더라도 센터에게 분배해야 되기 때문에 무조건 90%만 가질 수 있음
2) seller에는 같은 이름이 중복해서 들어있을 수 있음 (주의!)
- 얼핏 봤을 때 트리구조이기에 수익금을 각 트리에 세팅하고 최하위 자식 노드부터 최상위 부모 노드의 방향으로 한번에 연산하면 될 거라고 생각할 수 있지만, 같은 이름이 중복해서 들어있을 수 있으므로,
-> 발생한 수익을 하나씩 처리해주어야 함
예외상황 ex) 25원 -> 2원을 배분, 50원 -> 5원을 배분
주석 참조
using System;
using System.Collections.Generic;
public class Solution
{
public int[] solution(string[] enroll, string[] referral, string[] seller, int[] amount)
{
int[] answer = new int[enroll.Length]; // 수익 현황 배열
var intArray = new int[enroll.Length]; // 나(index)의 추천인(value) 배열, 없으면 -1
var dict = new Dictionary<string, int>(); // 이름사전 <이름, 인덱스>
// 이름사전, 추천인 배열 세팅
dict.Add("-", -1);
for(int i = 0; i < enroll.Length; i++)
{
dict.Add(enroll[i], i);
intArray[i] = dict[referral[i]];
}
// 수익이 발생한 것 하나씩 처리
for(int i = 0; i < seller.Length; i++)
{
int currIndex = dict[seller[i]]; // 나의 인덱스
int money = amount[i] * 100; // 수익금
while(true)
{
// 배분할 수익금과 나의 수익 추가
int subMoney = (int)Math.Floor(money * 0.1f);
answer[currIndex] += money - subMoney;
// 배분할 대상이 없거나 배분할 수익금이 없을 경우 중단
if(subMoney == 0 || intArray[currIndex] == -1)
break;
// 배분 수익금과 배분 대상 세팅
currIndex = intArray[currIndex];
money = subMoney;
}
}
return answer;
}
}
'CodingTest > Programmers Lv.3' 카테고리의 다른 글
[프로그래머스 C#] Lv.3 이중우선순위큐 (0) | 2024.02.05 |
---|---|
[프로그래머스 C#] Lv.3 인사고과 (0) | 2024.01.31 |
[프로그래머스 C#] Lv.3 입국심사 (0) | 2024.01.26 |
[프로그래머스 C#] Lv.3 가장 긴 팰린드롬 (0) | 2024.01.24 |
[프로그래머스 C#] Lv.3 스티커 모으기(2) (1) | 2024.01.04 |