Game Development, 게임개발/개발

주어진 기준에 가장 가까운 값 출력하기 - Unity

게임이 더 좋아 2021. 5. 28. 17:46
반응형
728x170

이건 조금 생각해봐야 했던 문제다.

 

최솟값임을 알기 위해서는 모든 데이터를 훑어봐야하고

최솟값을 구했다면 해당하는 값이 무엇인지 조사해봐야했다.

 

https://www.codingame.com/ide/puzzle/temperatures

 


 

#풀이

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {

        
        int n = int.Parse(Console.ReadLine()); // the number of temperatures to analyse
        string[] inputs = Console.ReadLine().Split(' ');

        int dist; // distance from the standard (like zero)
        int[] arr = new int[n];
        int ans = 0;
        int m = 5527;

        for (int i = 0; i < n; i++)
        {
            int t = int.Parse(inputs[i]);// a temperature expressed as an integer ranging from -273 to 5526
            
            if(t>0){
                dist = t-0;
            }else{
                dist = 0-t;
            }

            if(dist<m){
                m = dist;
            }
        }

        for(int k = 0; k<n; k++){
                if(m == int.Parse(inputs[k])){
                    ans = m;
                    break;
                }else if(-m == int.Parse(inputs[k])){
                    ans = -m;
                }

        }
        

        // Write an answer using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        Console.WriteLine(ans);
    }
}

 

 

위에 이어서 말하자면

 

for문을 돌면서 최솟값을 찾아야했고

또한 dist를 이용하여 절댓값을 대신 썼으며 여기선 abs()를 쓰지 않았다.

**왜냐면 abs는 0하고 가까운 값이지 기준이 달라지면 어떡해??ㅎ

 

최솟값을 구했다면 그 값으로 해당 인덱스를 찾아야했다.

즉, 무조건 2n번 이상이 걸렸다는 얘기다.

 

해당 인덱스를 찾았다면 그 값이 양수라면 무조건 양수를 출력하면 된다.

(다른 인덱스에서 음수를 가리켜도 양수가 우선이니까)

하지만 그 값이 음수라면 계속 찾아봐야한다.

(양수가 나온다면 양수를 출력해야하고 마지막까지 음수가 나오면 그제서야 음수다)

 

그리고 기본적으로 0이 제일 0에 가깝기 때문에 ans = 0 으로 둔 채 갱신을 하였다.

 

 

728x90
반응형
그리드형