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
- Lv2
- Animation State Machine
- Blend Type
- CSharp #자료구조
- 양과 늑대
- 플레이어 방향전환
- pccp 기출문제 2번
- Lv.3
- 미로 탈출 명령어
- 9375번
- dfs
- pccp 기출문제 3번
- heap tree
- Algorithm
- 연속 펄스 부분 수열의 합
- 플레이어 이동
- pccp 기출문제 1번
- 유니티
- 백준 c++ 9375번
- dp 알고리즘
- Hp바
- 프로그래머스
- LayerMark
- Unity
- C#
- Ainimation Blending
- 오브젝트 풀링
- Back Tracking
- 충돌위험 찾기
- 2D슈팅게임
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.3 순위 본문
https://school.programmers.co.kr/learn/courses/30/lessons/49191?language=csharp
1. 정답코드 및 핵심 아이디어, 유의사항
주어진 조건에 따라 순위를 알 수 있는 선수의 수를 구하는 문제
- 주어진 승패유무를 2차원 bool타입 배열에 입력 [이긴 선수, 진 선수]에 대한 정보 입력
- 모든 선수를 순회하며 내가 이긴 선수와 진 선수에 대한 정보를 입력
-> 내가 A에게 지고 B에게 이겼다면, A는 B를 무조건 이김
- 나를 제외한 모든 선수와의 승패유무를 알면 순위를 알 수 있음
주석 참조
using System;
public class Solution
{
public int solution(int n, int[,] results)
{
int answer = 0;
// [이긴 선수, 진 선수] 의 대한 정보가 있으면 true
var boolArrays = new bool[n + 1, n + 1];
// 주어진 기본 정보 세팅
for (int i = 0; i < results.GetLength(0); i++)
boolArrays[results[i, 0], results[i, 1]] = true;
// 이어지는 정보 세팅
for (int i = 1; i <= n; i++) // 나
{
for (int win = 1; win <= n; win++) // 나를 이긴 선수
{
for (int lose = 1; lose <= n; lose++) // 나에게 진 선수
{
// 나를 이긴 선수와 내가 이긴 선수에 대한 정보가 있다면 두 선수의 승패정보 갱신
if (boolArrays[win, i] && boolArrays[i, lose])
{
boolArrays[win, lose] = true;
}
}
}
}
for (int i = 1; i <= n; i++)
{
int count = 0;
for (int j = 1; j <= n; j++)
{
// i번째 선수와 j번째 선수 사이의 승패 유무를 알 수 있다면
if (boolArrays[i, j] || boolArrays[j, i])
count++;
}
// 모든 선수와의 승패유무가 존재한다면
if (count + 1 == n)
answer++;
}
return answer;
}
}
'CodingTest > Programmers Lv.3' 카테고리의 다른 글
[프로그래머스 C#] Lv.3 등대 (0) | 2024.02.19 |
---|---|
[프로그래머스 C#] Lv.3 110 옮기기 (0) | 2024.02.18 |
[프로그래머스 C#] Lv.3 이중우선순위큐 (0) | 2024.02.05 |
[프로그래머스 C#] Lv.3 인사고과 (0) | 2024.01.31 |
[프로그래머스 C#] Lv.3 입국심사 (0) | 2024.01.26 |