250x250
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 | 31 |
Tags
- Object Poling
- joystick
- Unity
- 플레이어 방향전환
- 유니티
- 패럴렉스
- apk
- 일시정지
- Transform
- raycasting
- Object Pooling
- Blend Type
- Prefabs
- rotation
- Animation State Machine
- Scrooling
- LayerMark
- rigidbody
- 스크롤링
- 오브젝트 풀링
- 프리팹
- 플레이어 이동
- Vector3
- Parallax
- Hpbar
- Ainimation Blending
- 2D슈팅게임
- raycast
- Hp바
- CSharp #자료구조
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.3 인사고과 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/152995
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 정답코드 및 핵심 아이디어, 유의사항
주어진 조건에 따라 주어진 사원 중에 0번 인덱스로 주어지는 완호의 등수를 구하는 문제
- 핵심은 자신을 제외한 모든 사원에 대해서 두 점수가 모두 높은 다른 사원이 있다면 인센티브 대상에서 제외되는 것
-> 주어진 조건을 만족하는 숫자 + 1을 리턴하고 없으면 -1을 리턴하면 됨
0) 주어진 조건
- 주어진 두 개의 점수의 총합으로 순위를 산출
- 단, 모든 사원에 대해서 두 개의 점수가 모두 높은 사원이 있다면 대상에서 제외됨
-> 두 개의 점수가 모두 높으면 총합이 높을 수밖에 없음
1) 연산 최적화
- 완호보다 총합이 높은 사원만 탐색 대상으로 둠
- 탐색 대상인 사원이 인센티브 대상이 되는지 판별할 때, 자신보다 총합이 낮은 사원하고는 비교하지 않음
주석 참조
using System;
using System.Collections.Generic;
public class Solution
{
public class DataClass
{
public int score1; // 근무 태도 점수
public int score2; // 동료 평가 점수
public int total; // 근무 태도 점수 + 동료 평가 점수
public DataClass(int score1, int score2)
{
this.score1 = score1;
this.score2 = score2;
total = score1 + score2;
}
}
public int solution(int[,] scores)
{
int answer = 1; // 현재 완호의 등수를 나타냄
var list = new List<DataClass>(); // 완호보다 총합이 높은 사원을 담을 리스트
DataClass dataClass = new DataClass(scores[0, 0], scores[0, 1]); // 완호의 데이터
// 완호보다 총합이 높은 사원만 추출
for (int i = 1; i < scores.GetLength(0); i++)
if (dataClass.total < scores[i, 0] + scores[i, 1])
list.Add(new DataClass(scores[i, 0], scores[i, 1]));
// 총합 기준 내림차순 정렬
list.Sort((x, y) => (x.total > y.total) ? -1 : 1);
// 총합이 가장 큰 값부터 순서대로 체크
for (int i = 0; i < list.Count; i++)
{
// 완호가 인센티브를 받지 못하는지 체크
if (dataClass.score1 < list[i].score1 &&
dataClass.score2 < list[i].score2)
return -1;
bool isCheck = true; // 해당 사원이 인센티브를 받는지 여부
// 해당 사원보다 총합이 같거나 큰 대상하고만 비교
for (int j = 0; j < i; j++)
{
// 해당 사원이 인센티브를 받지 못하는지 체크
if (list[i].score1 < list[j].score1 &&
list[i].score2 < list[j].score2)
{
isCheck = false;
break;
}
}
// 나보다 높은 순위에 배치될 사원 발견
if (isCheck)
answer++;
}
return answer;
}
}
728x90
'Programmers - C# > CodingTest Lv.3' 카테고리의 다른 글
[프로그래머스 C#] Lv.3 순위 (0) | 2024.02.07 |
---|---|
[프로그래머스 C#] Lv.3 이중우선순위큐 (0) | 2024.02.05 |
[프로그래머스 C#] Lv.3 양과 늑대 (1) | 2024.01.29 |
[프로그래머스 C#] Lv.3 입국심사 (0) | 2024.01.26 |
[프로그래머스 C#] Lv.3 다단계 칫솔 판매 (1) | 2024.01.25 |