C# 완주하지 못한 선수
participant의 값들을 Dictionary<int,string>에 저장한다
이때 동명이인이 있을 수 있으므로 key에 저장하지 않고 value에 저장했다
단순히 dic의 value와 completion의 값들이 일치할 경우 dic의 value를 삭제하는 게 아니라
FirstOrDefault() 메서드가 시퀀스의 첫번째 요소를 반환한다는 점을 이용해서
동명이인 중 한 명만 완주했을 경우의 문제를 해결했다
using System;
using System.Collections.Generic;
using System.Linq;
namespace Runner
{
class Program
{
static void Main(string[] args)
{
string[] participant = { "marina", "josipa", "nikola", "vinko", "filipa" };
string[] completion = { "josipa", "filipa", "marina", "nikola" };
Console.WriteLine(Solution(participant, completion));
}
public static string Solution(string[] participant, string[] completion)
{
string answer = "";
//여기서 부터 작성
Dictionary<int,string> dic = new Dictionary<int,string>();
for(int i = 0; i < participant.Length; i++)
dic.Add(i, participant[i]);
//dic의 value 중 completion의 값과 일치하는 첫번째 value들의
//key 반환, 그 key에 해당하는 value 값을 삭제
for (int i=0; i < completion.Length; i++)
{
int key = dic.FirstOrDefault(j => j.Value == completion[i]).Key;
dic.Remove(key);
}
//answer에 dic에 마지막으로 남은 value 저장
foreach(KeyValuePair<int,string> pair in dic)
answer = pair.Value;
return answer;
}
}
}
참고
https://developer-talk.tistory.com/695
[C#]Dictionary 값에 해당하는 키 가져오는 방법
Dictonary 값에 해당하는 키 가져오는 방법 C#의 Dictionary는 형식의 데이터를 가지는 컬렉션입니다. Dictionary의 키(Key)는 유니크하므로 중복될 수 없지만, 값(Value)은 중복될 수 있습니다. 따라서, Dictio
developer-talk.tistory.com
https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.firstordefault?view=net-7.0
Enumerable.FirstOrDefault 메서드 (System.Linq)
시퀀스의 첫 번째 요소를 반환하거나, 요소가 없으면 기본값을 반환합니다.
learn.microsoft.com
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr