반응형
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
반응형
그리드형
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
2진법 규칙에 맞춰서 출력하기 - C# (0) | 2021.05.29 |
---|---|
주어진 글자 디스플레이에 출력하기 - Unity (0) | 2021.05.28 |
오브젝트를 해당 위치로 옮기기 - Unity (0) | 2021.05.28 |
가장 큰 값부터 없애기 - C# (0) | 2021.05.28 |
유니티 No Sprite Editor Window registered 해결 방법 [Unity] (0) | 2021.05.28 |