문제
https://www.acmicpc.net/problem/2548
Algorithm
주어진 모든 자연수들에 대하여 차이가 가장 작은 자연수를 대표자연수라고 하고, 이를 찾는 문제이다.
차이가 가장 작으려면 주어진 자연수들의 범위 내에서 대표자연수가 존재할 것이다.
주어진 자연수가 예제 처럼 4 3 2 2 9 10이라면 대표 자연수의 범위는 2 ~ 10이 될것이다.
그러므로 자연수들을 입력받은 후 최솟값과 최대값을 구해주고 그 안에서 브루트포스를 진행하면 된다.
대표 자연수가 2개 이상일 경우에 그중 제일 작은 자연수를 출력하면 되므로 최솟값을 갱신할때 등호가 없이 >로 비교해주면 된다.
Code
input = __import__('sys').stdin.readline
n = int(input())
arr = (list(map(int,input().split())))
mins = min(arr) #대표 자연수의 최솟값
maxs = max(arr) #대표 자연수의 최대값
ans = 0 #대표 자연수의 값
minplus = int(1e9) #차이가 최소인 경우
for i in range(mins, maxs+1):
sums = 0
#자연수들이 있는 배열에서 현재 수와의 차이를 전부 더한 후 가장 작으면 최신화
for t in arr:
sums += abs(t-i)
if minplus > sums:
minplus = sums
ans = i
print(ans)
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 14889 스타트와 링크 (0) | 2024.01.14 |
---|---|
[백준/C++] 2003번: 수들의 합 2 (0) | 2024.01.13 |
[Baekjoon/C++] 15654: N과 M (5) (0) | 2024.01.12 |
[백준/C++] 날짜 계산 (0) | 2024.01.12 |
[프로그래머스/Python] 소수 찾기 (0) | 2024.01.10 |