[BAEKJOON] 백준 15784: 질투진서 (C#)

2024. 6. 18. 20:22IT/BaekJoon

문제 링크

https://www.acmicpc.net/problem/15784

 

 

문제

컴퓨터공학과 에릭남 김진서는 주변에 자기보다 잘생긴 사람이 보이면 화가난다.

진서는 수업을 듣기위해 강의실에 앉아있다. 강의실에는 N행 N열로 의자가 놓여있다.

N행 N열의 의자 모두 사람들이 앉아있고 사람들의 매력지수 X[i][j] 가 주어진다. (1 ≤ i, j ≤ N) i행 j열의 매력지수는 X[i][j]이고, A 가 B 보다 매력지수가 더 높으면 A 가 더 잘생겼다고 할 수 있다.

진서는 자기보다 잘생긴 사람이 있는지 탐색을 하는데, 이때 자신과 같은 행인 의자에 앉아 있는 사람 또는 같은 열인 의자에 앉아 있는 사람만 볼 수 있다.

진서가 앉아있는 의자의 행 a 와 열 b가 주어질 때,  진서가 볼 수 있는 사람 중 자신보다 잘생긴 사람이 있다면 ANGRY, 그렇지 않다면 HAPPY를 출력하시오.

 

 

입력

입력의 첫째 줄에 의자가 놓인 행과 열의 수 N(1 ≤ N ≤ 1000)이 주어지고 , 진서가 앉은 의자가 위치한 행 a, 열 b가 주어진다. 이후 두 번째 줄부터 N+1 줄까지 강의실에 앉아있는 학생들의 매력지수 X[i][j](1 ≤ X ≤ 50000)가 주어진다. X[i][j] 는 i행 j열에 앉은 학생의 매력지수이다. 

 

 

출력

진서가 자기보다 잘생긴 사람을 본다면 ANGRY, 아니라면 HAPPY를 출력한다.

 

 

 

통과한 답안

namespace _15784
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int N = int.Parse(inputs[0]);
            int a = int.Parse(inputs[1]);
            int b = int.Parse(inputs[2]);
            List<int> canSee = new List<int>();
            int me = 0;
            for (int i = 0; i < N; i++)
            {
                string[] arrInputs = Console.ReadLine().Split(' ');
                for (int j = 0; j < N; j++)
                {
                    if (i == a - 1 || j == b - 1)
                    {
                        canSee.Add(int.Parse(arrInputs[j]));
                    }

                    if (i == a - 1 && j == b - 1)
                    {
                        me = int.Parse(arrInputs[j]);
                    }
                }
            }

            Console.WriteLine(canSee.Max() == me ? "HAPPY" : "ANGRY");
        }
    }
}

 

강의실에 있는 학생들의 매력지수가 주어질 때,

자신의 매력지수보다 높은 학생이 보이는 위치(행이나 열이 같은 경우)에 있는지를 확인하는 문제이다.

 

처음에는 모든 학생의 매력지수를 저장하는 이차원 배열을 생성한

입력 값을 모두 저장한 뒤에 비교하는 방식으로 진행했는데,

N 값이 커짐에 따라서 불필요한 데이터 저장이 발생하기 때문에

List를 이용해서 보이는 위치의 학생들만 저장하는 방식으로 변경하였다.

 

List를 이용해서 진서가 앉아 있는 행과 열의 학생들의 매력지수를 모두 저장한 후에

그 List의 최댓값이 진서의 매력지수라면 HAPPY, 아니라면 ANGRY를 출력하도록 구현하였다.