코딩 테스트/프로그래머스

C# 완주하지 못한 선수

s0002 2023. 1. 20. 02:50

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