[26069] 붙임성 좋은 총총이

RudinP·2023년 4월 20일
0

BaekJoon

목록 보기
52/77

사람들이 만난 기록이 시간 순서대로
NN개 주어진다. (총총이는 토끼이지만 이 문제에서는 편의상 사람이라고 가정한다.)
무지개 댄스를 추지 않고 있던 사람이 무지개 댄스를 추고 있던 사람을 만나게 된다면, 만난 시점 이후로 무지개 댄스를 추게 된다.
기록이 시작되기 이전 무지개 댄스를 추고 있는 사람은 총총이 뿐이라고 할 때, 마지막 기록 이후 무지개 댄스를 추는 사람이 몇 명인지 구해보자!

입력

  • 첫번째 줄에는 사람들이 만난 기록의 수
    N (1N1 000)N\ (1 \le N \le 1\ 000)이 주어진다.
    두번째 줄부터 NN개의 줄에 걸쳐 사람들이 만난 기록이 주어진다.
    i+1i + 1번째 줄에는 ii번째로 만난 사람들의 이름 AiA_iBiB_i가 공백을 사이에 두고 주어진다.
    AiA_iBiB_i는 숫자와 영문 대소문자로 이루어진 최대 길이 2020의 문자열이며, 서로 같지 않다.
    총총이의 이름은 ChongChong으로 주어지며, 기록에서 1회 이상 주어진다.
    동명이인은 없으며, 사람의 이름은 대소문자를 구분한다. (ChongChong과 chongchong은 다른 이름이다.)

출력

  • 마지막 기록 이후 무지개 댄스를 추는 사람의 수를 출력하라.

생각

Hashset를 이용할 예정이다.
우선 s[0]과 s[1] 각각 HashSet에 포함되어있는지 확인한다.
둘중 하나라도 있다면, 둘 다 있는지 체크한 뒤 둘 다 있지 않다면, 없는 쪽을 HashSet에 추가해준다.
만약 s[0] 과 s[1] 둘 다 HashSet에 포함되어있지 않지만, 하나라도 ChongChong이면 둘 다 추가해준다. 이 경우에는 나중에 ChongChong이 있을 땐 이미 위의 HashSet에 포함되어있는지 판단되었기 때문에 별도처리 해주지 않아도 된다.

처음 코드

namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {   
            using var input = new System.IO.StreamReader(Console.OpenStandardInput());
            using var print = new System.IO.StreamWriter(Console.OpenStandardOutput());

            int intInput() => int.Parse(input.ReadLine());
            //int[] intsInput() => Array.ConvertAll(input.ReadLine().Split(), s => int.Parse(s));
            
            int n = intInput();

            HashSet<string> gom = new();

            for(int i = 0; i < n; i++)
            {
                string[] s = input.ReadLine().Split();

                bool a = gom.Contains(s[0]);
                bool b = gom.Contains(s[1]);

                if (a || b)
                {
                    if (!(a && b))
                    { 
                        gom.Add(a ? s[1] : s[0]);
                    }
                }
                else
                {
                    if (s[0].Equals("ChongChong") || s[1].Equals("ChongChong"))
                    {
                        gom.Add(s[0]);
                        gom.Add(s[1]);
                    }
                }
            }

            print.WriteLine(gom.Count());

        }
    }
}

profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글